appium-remote-debugger 10.0.2 → 10.1.0
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 +14 -0
- package/build/index.js +18 -33
- package/build/lib/atoms.d.ts +17 -0
- package/build/lib/atoms.d.ts.map +1 -0
- package/build/lib/atoms.js +75 -50
- package/build/lib/atoms.js.map +1 -1
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +5 -11
- package/build/lib/logger.js.map +1 -1
- package/build/lib/mixins/connect.d.ts +125 -0
- package/build/lib/mixins/connect.d.ts.map +1 -0
- package/build/lib/mixins/connect.js +299 -202
- package/build/lib/mixins/connect.js.map +1 -1
- package/build/lib/mixins/events.d.ts +7 -0
- package/build/lib/mixins/events.d.ts.map +1 -0
- package/build/lib/mixins/events.js +7 -12
- package/build/lib/mixins/events.js.map +1 -1
- package/build/lib/mixins/execute.d.ts +38 -0
- package/build/lib/mixins/execute.d.ts.map +1 -0
- package/build/lib/mixins/execute.js +162 -122
- package/build/lib/mixins/execute.js.map +1 -1
- package/build/lib/mixins/index.d.ts +5 -0
- package/build/lib/mixins/index.d.ts.map +1 -0
- package/build/lib/mixins/index.js +14 -23
- package/build/lib/mixins/index.js.map +1 -1
- package/build/lib/mixins/message-handlers.d.ts +92 -0
- package/build/lib/mixins/message-handlers.d.ts.map +1 -0
- package/build/lib/mixins/message-handlers.js +160 -97
- package/build/lib/mixins/message-handlers.js.map +1 -1
- package/build/lib/mixins/navigate.d.ts +92 -0
- package/build/lib/mixins/navigate.d.ts.map +1 -0
- package/build/lib/mixins/navigate.js +199 -141
- package/build/lib/mixins/navigate.js.map +1 -1
- package/build/lib/protocol/index.d.ts +14 -0
- package/build/lib/protocol/index.d.ts.map +1 -0
- package/build/lib/protocol/index.js +192 -118
- package/build/lib/protocol/index.js.map +1 -1
- package/build/lib/remote-debugger-real-device.d.ts +6 -0
- package/build/lib/remote-debugger-real-device.d.ts.map +1 -0
- package/build/lib/remote-debugger-real-device.js +29 -32
- package/build/lib/remote-debugger-real-device.js.map +1 -1
- package/build/lib/remote-debugger.d.ts +119 -0
- package/build/lib/remote-debugger.d.ts.map +1 -0
- package/build/lib/remote-debugger.js +256 -226
- package/build/lib/remote-debugger.js.map +1 -1
- package/build/lib/rpc/index.d.ts +4 -0
- package/build/lib/rpc/index.d.ts.map +1 -0
- package/build/lib/rpc/index.js +10 -21
- package/build/lib/rpc/index.js.map +1 -1
- package/build/lib/rpc/remote-messages.d.ts +51 -0
- package/build/lib/rpc/remote-messages.d.ts.map +1 -0
- package/build/lib/rpc/remote-messages.js +203 -224
- package/build/lib/rpc/remote-messages.js.map +1 -1
- package/build/lib/rpc/rpc-client-real-device.d.ts +6 -0
- package/build/lib/rpc/rpc-client-real-device.d.ts.map +1 -0
- package/build/lib/rpc/rpc-client-real-device.js +43 -49
- package/build/lib/rpc/rpc-client-real-device.js.map +1 -1
- package/build/lib/rpc/rpc-client-simulator.d.ts +15 -0
- package/build/lib/rpc/rpc-client-simulator.d.ts.map +1 -0
- package/build/lib/rpc/rpc-client-simulator.js +138 -125
- package/build/lib/rpc/rpc-client-simulator.js.map +1 -1
- package/build/lib/rpc/rpc-client.d.ts +142 -0
- package/build/lib/rpc/rpc-client.d.ts.map +1 -0
- package/build/lib/rpc/rpc-client.js +559 -418
- package/build/lib/rpc/rpc-client.js.map +1 -1
- package/build/lib/rpc/rpc-message-handler.d.ts +13 -0
- package/build/lib/rpc/rpc-message-handler.d.ts.map +1 -0
- package/build/lib/rpc/rpc-message-handler.js +181 -166
- package/build/lib/rpc/rpc-message-handler.js.map +1 -1
- package/build/lib/utils.d.ts +61 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +241 -155
- package/build/lib/utils.js.map +1 -1
- package/lib/atoms.js +25 -4
- package/lib/mixins/connect.js +102 -7
- package/lib/mixins/execute.js +46 -13
- package/lib/mixins/message-handlers.js +44 -1
- package/lib/mixins/navigate.js +55 -3
- package/lib/remote-debugger.js +112 -0
- package/lib/rpc/rpc-client-real-device.js +1 -6
- package/lib/rpc/rpc-client-simulator.js +7 -1
- package/lib/rpc/rpc-client.js +106 -6
- package/lib/rpc/rpc-message-handler.js +1 -1
- package/lib/utils.js +31 -1
- package/package.json +26 -16
|
@@ -1,163 +1,221 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
require("
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 logger_1 = __importDefault(require("../logger"));
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
const events_1 = __importDefault(require("./events"));
|
|
9
|
+
const support_1 = require("@appium/support");
|
|
10
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
11
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
12
|
+
/**
|
|
13
|
+
* @typedef {(() => Promise<any>|void)|undefined} TPageLoadVerifyHook
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* @this {import('../remote-debugger').RemoteDebugger}
|
|
17
|
+
* @returns {void}
|
|
18
|
+
*/
|
|
15
19
|
function frameDetached() {
|
|
16
|
-
|
|
20
|
+
this.emit(events_1.default.EVENT_FRAMES_DETACHED);
|
|
17
21
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
await this.pageLoadDelay;
|
|
31
|
-
} catch (err) {
|
|
32
|
-
if (err instanceof _bluebird.default.CancellationError) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (!this.appIdKey) {
|
|
37
|
-
_logger.default.debug('Not connected to an application. Ignoring page load');
|
|
38
|
-
return;
|
|
22
|
+
/**
|
|
23
|
+
* @this {import('../remote-debugger').RemoteDebugger}
|
|
24
|
+
* @param {timing.Timer?} startPageLoadTimer
|
|
25
|
+
* @param {TPageLoadVerifyHook} [pageLoadVerifyHook]
|
|
26
|
+
* @returns {Promise<void>}
|
|
27
|
+
*/
|
|
28
|
+
async function pageLoad(startPageLoadTimer, pageLoadVerifyHook = lodash_1.default.noop) {
|
|
29
|
+
const timeoutMs = 500;
|
|
30
|
+
if (!lodash_1.default.isFunction(startPageLoadTimer?.getDuration)) {
|
|
31
|
+
logger_1.default.debug(`Page load timer not a timer. Creating new timer`);
|
|
32
|
+
startPageLoadTimer = new support_1.timing.Timer().start();
|
|
39
33
|
}
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
logger_1.default.debug('Page loaded, verifying whether ready');
|
|
35
|
+
this.pageLoading = true;
|
|
36
|
+
const verify = async () => {
|
|
37
|
+
this.pageLoadDelay = support_1.util.cancellableDelay(timeoutMs);
|
|
38
|
+
try {
|
|
39
|
+
await this.pageLoadDelay;
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
if (err instanceof bluebird_1.default.CancellationError) {
|
|
43
|
+
// if the promise has been cancelled
|
|
44
|
+
// we want to skip checking the readiness
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// we can get this called in the middle of trying to find a new app
|
|
49
|
+
if (!this.appIdKey) {
|
|
50
|
+
logger_1.default.debug('Not connected to an application. Ignoring page load');
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (lodash_1.default.isFunction(pageLoadVerifyHook)) {
|
|
54
|
+
await pageLoadVerifyHook();
|
|
55
|
+
}
|
|
56
|
+
// if we are ready, or we've spend too much time on this
|
|
57
|
+
// @ts-ignore startPageLoadTimer is defined here
|
|
58
|
+
const elapsedMs = startPageLoadTimer.getDuration().asMilliSeconds;
|
|
59
|
+
if (await this.checkPageIsReady() || (this.pageLoadMs > 0 && elapsedMs > this.pageLoadMs)) {
|
|
60
|
+
logger_1.default.debug('Page is ready');
|
|
61
|
+
this.pageLoading = false;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
logger_1.default.debug('Page was not ready, retrying');
|
|
65
|
+
await verify();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
try {
|
|
69
|
+
await verify();
|
|
42
70
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
} else {
|
|
48
|
-
_logger.default.debug('Page was not ready, retrying');
|
|
49
|
-
await verify();
|
|
71
|
+
finally {
|
|
72
|
+
// @ts-ignore startPageLoadTimer is defined here
|
|
73
|
+
logger_1.default.debug(`Page load completed in ${startPageLoadTimer.getDuration().asMilliSeconds.toFixed(0)}ms`);
|
|
74
|
+
this.pageLoading = false;
|
|
50
75
|
}
|
|
51
|
-
};
|
|
52
|
-
try {
|
|
53
|
-
await verify();
|
|
54
|
-
} finally {
|
|
55
|
-
_logger.default.debug(`Page load completed in ${startPageLoadTimer.getDuration().asMilliSeconds.toFixed(0)}ms`);
|
|
56
|
-
this.pageLoading = false;
|
|
57
|
-
}
|
|
58
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* @this {import('../remote-debugger').RemoteDebugger}
|
|
79
|
+
* @returns {void}
|
|
80
|
+
*/
|
|
59
81
|
function cancelPageLoad() {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
82
|
+
logger_1.default.debug('Unregistering from page readiness notifications');
|
|
83
|
+
this.pageLoading = false;
|
|
84
|
+
if (this.pageLoadDelay) {
|
|
85
|
+
this.pageLoadDelay.cancel();
|
|
86
|
+
}
|
|
65
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* @this {import('../remote-debugger').RemoteDebugger}
|
|
90
|
+
* @returns {Promise<void>}
|
|
91
|
+
*/
|
|
66
92
|
async function pageUnload() {
|
|
67
|
-
|
|
68
|
-
|
|
93
|
+
logger_1.default.debug('Page unloading');
|
|
94
|
+
await this.waitForDom();
|
|
69
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* @this {import('../remote-debugger').RemoteDebugger}
|
|
98
|
+
* @param {timing.Timer|null|undefined} startPageLoadTimer
|
|
99
|
+
* @param {TPageLoadVerifyHook} [pageLoadVerifyHook]
|
|
100
|
+
* @returns {Promise<void>}
|
|
101
|
+
*/
|
|
70
102
|
async function waitForDom(startPageLoadTimer, pageLoadVerifyHook) {
|
|
71
|
-
|
|
72
|
-
|
|
103
|
+
logger_1.default.debug('Waiting for dom...');
|
|
104
|
+
await this.pageLoad(startPageLoadTimer, pageLoadVerifyHook);
|
|
73
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* @this {import('../remote-debugger').RemoteDebugger}
|
|
108
|
+
* @returns {Promise<boolean>}
|
|
109
|
+
*/
|
|
74
110
|
async function checkPageIsReady() {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
111
|
+
(0, utils_1.checkParams)({ appIdKey: this.appIdKey });
|
|
112
|
+
logger_1.default.debug('Checking document readyState');
|
|
113
|
+
const readyCmd = 'document.readyState;';
|
|
114
|
+
let readyState = 'loading';
|
|
115
|
+
try {
|
|
116
|
+
readyState = await bluebird_1.default.resolve(this.execute(readyCmd, true)).timeout(this.pageReadyTimeout);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
if (!(err instanceof bluebird_1.default.TimeoutError)) {
|
|
120
|
+
throw err;
|
|
121
|
+
}
|
|
122
|
+
logger_1.default.debug(`Page readiness check timed out after ${this.pageReadyTimeout}ms`);
|
|
123
|
+
return false;
|
|
86
124
|
}
|
|
87
|
-
|
|
88
|
-
return
|
|
89
|
-
}
|
|
90
|
-
_logger.default.debug(`Document readyState is '${readyState}'`);
|
|
91
|
-
return readyState === 'complete';
|
|
125
|
+
logger_1.default.debug(`Document readyState is '${readyState}'`);
|
|
126
|
+
return readyState === 'complete';
|
|
92
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* @this {import('../remote-debugger').RemoteDebugger}
|
|
130
|
+
* @param {string} url
|
|
131
|
+
* @param {TPageLoadVerifyHook} [pageLoadVerifyHook]
|
|
132
|
+
* @returns {Promise<void>}
|
|
133
|
+
*/
|
|
93
134
|
async function navToUrl(url, pageLoadVerifyHook) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
});
|
|
98
|
-
this._navigatingToPage = true;
|
|
99
|
-
try {
|
|
100
|
-
_logger.default.debug(`Navigating to new URL: '${url}'`);
|
|
101
|
-
const waitForFramePromise = this.waitForFrameNavigated();
|
|
102
|
-
await this.rpcClient.send('Page.navigate', {
|
|
103
|
-
url,
|
|
104
|
-
appIdKey: this.appIdKey,
|
|
105
|
-
pageIdKey: this.pageIdKey
|
|
106
|
-
});
|
|
107
|
-
if (!this.useNewSafari) {
|
|
108
|
-
await _bluebird.default.delay(1000);
|
|
135
|
+
(0, utils_1.checkParams)({ appIdKey: this.appIdKey, pageIdKey: this.pageIdKey });
|
|
136
|
+
if (!this.rpcClient) {
|
|
137
|
+
throw new Error('rpcClient is undefined. Is the debugger connected?');
|
|
109
138
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
if (this.navigationDelay) {
|
|
134
|
-
this.navigationDelay.cancel();
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
this.rpcClient.once('Page.frameNavigated', navEventListener);
|
|
138
|
-
if (!this.useNewSafari || this.pageLoadMs >= 0) {
|
|
139
|
-
const timeout = this.useNewSafari ? this.pageLoadMs : 500;
|
|
140
|
-
this.navigationDelay = _support.util.cancellableDelay(timeout);
|
|
141
|
-
try {
|
|
142
|
-
await this.navigationDelay;
|
|
143
|
-
navEventListener(null, `${timeout}ms timeout`);
|
|
144
|
-
} catch (err) {}
|
|
139
|
+
this._navigatingToPage = true;
|
|
140
|
+
try {
|
|
141
|
+
logger_1.default.debug(`Navigating to new URL: '${url}'`);
|
|
142
|
+
// begin listening for frame navigation event, which will be waited for later
|
|
143
|
+
const waitForFramePromise = this.waitForFrameNavigated();
|
|
144
|
+
await this.rpcClient.send('Page.navigate', {
|
|
145
|
+
url,
|
|
146
|
+
appIdKey: this.appIdKey,
|
|
147
|
+
pageIdKey: this.pageIdKey,
|
|
148
|
+
});
|
|
149
|
+
if (!this.useNewSafari) {
|
|
150
|
+
// a small pause for the browser to catch up
|
|
151
|
+
await bluebird_1.default.delay(1000);
|
|
152
|
+
}
|
|
153
|
+
// wait until the page has been navigated
|
|
154
|
+
await waitForFramePromise;
|
|
155
|
+
await this.waitForDom(new support_1.timing.Timer().start(), pageLoadVerifyHook);
|
|
156
|
+
// enable console logging, so we get the events (otherwise we only
|
|
157
|
+
// get notified when navigating to a local page
|
|
158
|
+
await this.rpcClient.send('Console.enable', {
|
|
159
|
+
appIdKey: this.appIdKey,
|
|
160
|
+
pageIdKey: this.pageIdKey,
|
|
161
|
+
});
|
|
145
162
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
this.rpcClient.off('Page.frameNavigated', navEventListener);
|
|
163
|
+
finally {
|
|
164
|
+
this._navigatingToPage = false;
|
|
149
165
|
}
|
|
150
|
-
});
|
|
151
166
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
167
|
+
/**
|
|
168
|
+
* @this {import('../remote-debugger').RemoteDebugger}
|
|
169
|
+
* @returns {Promise<any>}
|
|
170
|
+
*/
|
|
171
|
+
async function waitForFrameNavigated() {
|
|
172
|
+
let navEventListener;
|
|
173
|
+
return await new bluebird_1.default(async (resolve) => {
|
|
174
|
+
logger_1.default.debug('Waiting for frame navigated message...');
|
|
175
|
+
if (!this.rpcClient) {
|
|
176
|
+
throw new Error('rpcClient is undefined. Is the debugger connected?');
|
|
177
|
+
}
|
|
178
|
+
const start = new support_1.timing.Timer().start();
|
|
179
|
+
// add a handler for the `Page.frameNavigated` message
|
|
180
|
+
// from the remote debugger
|
|
181
|
+
navEventListener = (err, value) => {
|
|
182
|
+
logger_1.default.debug(`Frame navigated in ${start.getDuration().asMilliSeconds.toFixed(0)}ms from: ${value}`);
|
|
183
|
+
if (!this.allowNavigationWithoutReload && !this.pageLoading) {
|
|
184
|
+
resolve(value);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
logger_1.default.debug('Frame navigated but we were warned about it, not ' +
|
|
188
|
+
'considering page state unloaded');
|
|
189
|
+
this.allowNavigationWithoutReload = false;
|
|
190
|
+
}
|
|
191
|
+
if (this.navigationDelay) {
|
|
192
|
+
this.navigationDelay.cancel();
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
this.rpcClient.once('Page.frameNavigated', navEventListener);
|
|
196
|
+
// timeout, in case remote debugger doesn't respond,
|
|
197
|
+
// or takes a long time
|
|
198
|
+
if (!this.useNewSafari || this.pageLoadMs >= 0) {
|
|
199
|
+
// use pageLoadMs, or a small amount of time
|
|
200
|
+
const timeout = this.useNewSafari ? this.pageLoadMs : 500;
|
|
201
|
+
this.navigationDelay = support_1.util.cancellableDelay(timeout);
|
|
202
|
+
try {
|
|
203
|
+
await this.navigationDelay;
|
|
204
|
+
navEventListener(null, `${timeout}ms timeout`);
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
// nothing to do: we only get here if the remote debugger
|
|
208
|
+
// already notified of frame navigation, and the delay
|
|
209
|
+
// was cancelled
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}).finally(() => {
|
|
213
|
+
if (navEventListener) {
|
|
214
|
+
this.rpcClient?.off('Page.frameNavigated', navEventListener);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
exports.default = {
|
|
219
|
+
frameDetached, pageLoad, cancelPageLoad, pageUnload, waitForDom, checkPageIsReady, navToUrl, waitForFrameNavigated
|
|
161
220
|
};
|
|
162
|
-
|
|
163
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdXRpbHMiLCJfZXZlbnRzIiwiX3N1cHBvcnQiLCJfbG9kYXNoIiwiX2JsdWViaXJkIiwiZnJhbWVEZXRhY2hlZCIsImVtaXQiLCJldmVudHMiLCJFVkVOVF9GUkFNRVNfREVUQUNIRUQiLCJwYWdlTG9hZCIsInN0YXJ0UGFnZUxvYWRUaW1lciIsInBhZ2VMb2FkVmVyaWZ5SG9vayIsIl8iLCJub29wIiwiX3N0YXJ0UGFnZUxvYWRUaW1lciIsInRpbWVvdXRNcyIsImlzRnVuY3Rpb24iLCJnZXREdXJhdGlvbiIsImxvZyIsImRlYnVnIiwidGltaW5nIiwiVGltZXIiLCJzdGFydCIsInBhZ2VMb2FkaW5nIiwidmVyaWZ5IiwicGFnZUxvYWREZWxheSIsInV0aWwiLCJjYW5jZWxsYWJsZURlbGF5IiwiZXJyIiwiQiIsIkNhbmNlbGxhdGlvbkVycm9yIiwiYXBwSWRLZXkiLCJlbGFwc2VkTXMiLCJhc01pbGxpU2Vjb25kcyIsImNoZWNrUGFnZUlzUmVhZHkiLCJwYWdlTG9hZE1zIiwidG9GaXhlZCIsImNhbmNlbFBhZ2VMb2FkIiwiY2FuY2VsIiwicGFnZVVubG9hZCIsIndhaXRGb3JEb20iLCJjaGVja1BhcmFtcyIsInJlYWR5Q21kIiwicmVhZHlTdGF0ZSIsInJlc29sdmUiLCJleGVjdXRlIiwidGltZW91dCIsInBhZ2VSZWFkeVRpbWVvdXQiLCJUaW1lb3V0RXJyb3IiLCJuYXZUb1VybCIsInVybCIsInBhZ2VJZEtleSIsIl9uYXZpZ2F0aW5nVG9QYWdlIiwid2FpdEZvckZyYW1lUHJvbWlzZSIsIndhaXRGb3JGcmFtZU5hdmlnYXRlZCIsInJwY0NsaWVudCIsInNlbmQiLCJ1c2VOZXdTYWZhcmkiLCJkZWxheSIsIm5hdkV2ZW50TGlzdGVuZXIiLCJ2YWx1ZSIsImFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQiLCJuYXZpZ2F0aW9uRGVsYXkiLCJvbmNlIiwiZmluYWxseSIsIm9mZiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWl4aW5zL25hdmlnYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGNoZWNrUGFyYW1zIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgeyB0aW1pbmcsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuXG5mdW5jdGlvbiBmcmFtZURldGFjaGVkICgpIHtcbiAgdGhpcy5lbWl0KGV2ZW50cy5FVkVOVF9GUkFNRVNfREVUQUNIRUQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYWdlTG9hZCAoc3RhcnRQYWdlTG9hZFRpbWVyLCBwYWdlTG9hZFZlcmlmeUhvb2sgPSBfLm5vb3ApIHtcbiAgY29uc3QgdGltZW91dE1zID0gNTAwO1xuICBpZiAoIV8uaXNGdW5jdGlvbihzdGFydFBhZ2VMb2FkVGltZXI/LmdldER1cmF0aW9uKSkge1xuICAgIGxvZy5kZWJ1ZyhgUGFnZSBsb2FkIHRpbWVyIG5vdCBhIHRpbWVyLiBDcmVhdGluZyBuZXcgdGltZXJgKTtcbiAgICBzdGFydFBhZ2VMb2FkVGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZygnUGFnZSBsb2FkZWQsIHZlcmlmeWluZyB3aGV0aGVyIHJlYWR5Jyk7XG4gIHRoaXMucGFnZUxvYWRpbmcgPSB0cnVlO1xuXG4gIGNvbnN0IHZlcmlmeSA9IGFzeW5jICgpID0+IHtcbiAgICB0aGlzLnBhZ2VMb2FkRGVsYXkgPSB1dGlsLmNhbmNlbGxhYmxlRGVsYXkodGltZW91dE1zKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5wYWdlTG9hZERlbGF5O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEIuQ2FuY2VsbGF0aW9uRXJyb3IpIHtcbiAgICAgICAgLy8gaWYgdGhlIHByb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkXG4gICAgICAgIC8vIHdlIHdhbnQgdG8gc2tpcCBjaGVja2luZyB0aGUgcmVhZGluZXNzXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB3ZSBjYW4gZ2V0IHRoaXMgY2FsbGVkIGluIHRoZSBtaWRkbGUgb2YgdHJ5aW5nIHRvIGZpbmQgYSBuZXcgYXBwXG4gICAgaWYgKCF0aGlzLmFwcElkS2V5KSB7XG4gICAgICBsb2cuZGVidWcoJ05vdCBjb25uZWN0ZWQgdG8gYW4gYXBwbGljYXRpb24uIElnbm9yaW5nIHBhZ2UgbG9hZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChfLmlzRnVuY3Rpb24ocGFnZUxvYWRWZXJpZnlIb29rKSkge1xuICAgICAgYXdhaXQgcGFnZUxvYWRWZXJpZnlIb29rKCk7XG4gICAgfVxuXG4gICAgLy8gaWYgd2UgYXJlIHJlYWR5LCBvciB3ZSd2ZSBzcGVuZCB0b28gbXVjaCB0aW1lIG9uIHRoaXNcbiAgICBjb25zdCBlbGFwc2VkTXMgPSBzdGFydFBhZ2VMb2FkVGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcztcbiAgICBpZiAoYXdhaXQgdGhpcy5jaGVja1BhZ2VJc1JlYWR5KCkgfHwgKHRoaXMucGFnZUxvYWRNcyA+IDAgJiYgZWxhcHNlZE1zID4gdGhpcy5wYWdlTG9hZE1zKSkge1xuICAgICAgbG9nLmRlYnVnKCdQYWdlIGlzIHJlYWR5Jyk7XG4gICAgICB0aGlzLnBhZ2VMb2FkaW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZygnUGFnZSB3YXMgbm90IHJlYWR5LCByZXRyeWluZycpO1xuICAgICAgYXdhaXQgdmVyaWZ5KCk7XG4gICAgfVxuICB9O1xuICB0cnkge1xuICAgIGF3YWl0IHZlcmlmeSgpO1xuICB9IGZpbmFsbHkge1xuICAgIGxvZy5kZWJ1ZyhgUGFnZSBsb2FkIGNvbXBsZXRlZCBpbiAke3N0YXJ0UGFnZUxvYWRUaW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXNgKTtcbiAgICB0aGlzLnBhZ2VMb2FkaW5nID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FuY2VsUGFnZUxvYWQgKCkge1xuICBsb2cuZGVidWcoJ1VucmVnaXN0ZXJpbmcgZnJvbSBwYWdlIHJlYWRpbmVzcyBub3RpZmljYXRpb25zJyk7XG4gIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgaWYgKHRoaXMucGFnZUxvYWREZWxheSkge1xuICAgIHRoaXMucGFnZUxvYWREZWxheS5jYW5jZWwoKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBwYWdlVW5sb2FkICgpIHtcbiAgbG9nLmRlYnVnKCdQYWdlIHVubG9hZGluZycpO1xuICBhd2FpdCB0aGlzLndhaXRGb3JEb20oKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd2FpdEZvckRvbSAoc3RhcnRQYWdlTG9hZFRpbWVyLCBwYWdlTG9hZFZlcmlmeUhvb2spIHtcbiAgbG9nLmRlYnVnKCdXYWl0aW5nIGZvciBkb20uLi4nKTtcbiAgYXdhaXQgdGhpcy5wYWdlTG9hZChzdGFydFBhZ2VMb2FkVGltZXIsIHBhZ2VMb2FkVmVyaWZ5SG9vayk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNoZWNrUGFnZUlzUmVhZHkgKCkge1xuICBjaGVja1BhcmFtcyh7YXBwSWRLZXk6IHRoaXMuYXBwSWRLZXl9KTtcblxuICBsb2cuZGVidWcoJ0NoZWNraW5nIGRvY3VtZW50IHJlYWR5U3RhdGUnKTtcbiAgY29uc3QgcmVhZHlDbWQgPSAnZG9jdW1lbnQucmVhZHlTdGF0ZTsnO1xuICBsZXQgcmVhZHlTdGF0ZSA9ICdsb2FkaW5nJztcbiAgdHJ5IHtcbiAgICByZWFkeVN0YXRlID0gYXdhaXQgQi5yZXNvbHZlKHRoaXMuZXhlY3V0ZShyZWFkeUNtZCwgdHJ1ZSkpLnRpbWVvdXQodGhpcy5wYWdlUmVhZHlUaW1lb3V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKCEoZXJyIGluc3RhbmNlb2YgQi5UaW1lb3V0RXJyb3IpKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIGxvZy5kZWJ1ZyhgUGFnZSByZWFkaW5lc3MgY2hlY2sgdGltZWQgb3V0IGFmdGVyICR7dGhpcy5wYWdlUmVhZHlUaW1lb3V0fW1zYCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGxvZy5kZWJ1ZyhgRG9jdW1lbnQgcmVhZHlTdGF0ZSBpcyAnJHtyZWFkeVN0YXRlfSdgKTtcblxuICByZXR1cm4gcmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJztcbn1cblxuYXN5bmMgZnVuY3Rpb24gbmF2VG9VcmwgKHVybCwgcGFnZUxvYWRWZXJpZnlIb29rKSB7XG4gIGNoZWNrUGFyYW1zKHthcHBJZEtleTogdGhpcy5hcHBJZEtleSwgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleX0pO1xuXG4gIHRoaXMuX25hdmlnYXRpbmdUb1BhZ2UgPSB0cnVlO1xuXG4gIHRyeSB7XG4gICAgbG9nLmRlYnVnKGBOYXZpZ2F0aW5nIHRvIG5ldyBVUkw6ICcke3VybH0nYCk7XG5cbiAgICAvLyBiZWdpbiBsaXN0ZW5pbmcgZm9yIGZyYW1lIG5hdmlnYXRpb24gZXZlbnQsIHdoaWNoIHdpbGwgYmUgd2FpdGVkIGZvciBsYXRlclxuICAgIGNvbnN0IHdhaXRGb3JGcmFtZVByb21pc2UgPSB0aGlzLndhaXRGb3JGcmFtZU5hdmlnYXRlZCgpO1xuXG4gICAgYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUGFnZS5uYXZpZ2F0ZScsIHtcbiAgICAgIHVybCxcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICB9KTtcblxuICAgIGlmICghdGhpcy51c2VOZXdTYWZhcmkpIHtcbiAgICAgIC8vIGEgc21hbGwgcGF1c2UgZm9yIHRoZSBicm93c2VyIHRvIGNhdGNoIHVwXG4gICAgICBhd2FpdCBCLmRlbGF5KDEwMDApO1xuICAgIH1cblxuICAgIC8vIHdhaXQgdW50aWwgdGhlIHBhZ2UgaGFzIGJlZW4gbmF2aWdhdGVkXG4gICAgYXdhaXQgd2FpdEZvckZyYW1lUHJvbWlzZTtcblxuICAgIGF3YWl0IHRoaXMud2FpdEZvckRvbShuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKSwgcGFnZUxvYWRWZXJpZnlIb29rKTtcblxuICAgIC8vIGVuYWJsZSBjb25zb2xlIGxvZ2dpbmcsIHNvIHdlIGdldCB0aGUgZXZlbnRzIChvdGhlcndpc2Ugd2Ugb25seVxuICAgIC8vIGdldCBub3RpZmllZCB3aGVuIG5hdmlnYXRpbmcgdG8gYSBsb2NhbCBwYWdlXG4gICAgYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnQ29uc29sZS5lbmFibGUnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5fbmF2aWdhdGluZ1RvUGFnZSA9IGZhbHNlO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JGcmFtZU5hdmlnYXRlZCAoKSB7XG4gIGxldCBuYXZFdmVudExpc3RlbmVyO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICBsb2cuZGVidWcoJ1dhaXRpbmcgZm9yIGZyYW1lIG5hdmlnYXRlZCBtZXNzYWdlLi4uJyk7XG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcblxuICAgIC8vIGFkZCBhIGhhbmRsZXIgZm9yIHRoZSBgUGFnZS5mcmFtZU5hdmlnYXRlZGAgbWVzc2FnZVxuICAgIC8vIGZyb20gdGhlIHJlbW90ZSBkZWJ1Z2dlclxuICAgIG5hdkV2ZW50TGlzdGVuZXIgPSAoZXJyLCB2YWx1ZSkgPT4ge1xuICAgICAgbG9nLmRlYnVnKGBGcmFtZSBuYXZpZ2F0ZWQgaW4gJHtzdGFydC5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXMgZnJvbTogJHt2YWx1ZX1gKTtcbiAgICAgIGlmICghdGhpcy5hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkICYmICF0aGlzLnBhZ2VMb2FkaW5nKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKCdGcmFtZSBuYXZpZ2F0ZWQgYnV0IHdlIHdlcmUgd2FybmVkIGFib3V0IGl0LCBub3QgJyArXG4gICAgICAgICAgICAgICAgICAnY29uc2lkZXJpbmcgcGFnZSBzdGF0ZSB1bmxvYWRlZCcpO1xuICAgICAgICB0aGlzLmFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25EZWxheSkge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25EZWxheS5jYW5jZWwoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5ycGNDbGllbnQub25jZSgnUGFnZS5mcmFtZU5hdmlnYXRlZCcsIG5hdkV2ZW50TGlzdGVuZXIpO1xuXG4gICAgLy8gdGltZW91dCwgaW4gY2FzZSByZW1vdGUgZGVidWdnZXIgZG9lc24ndCByZXNwb25kLFxuICAgIC8vIG9yIHRha2VzIGEgbG9uZyB0aW1lXG4gICAgaWYgKCF0aGlzLnVzZU5ld1NhZmFyaSB8fCB0aGlzLnBhZ2VMb2FkTXMgPj0gMCkge1xuICAgICAgLy8gdXNlIHBhZ2VMb2FkTXMsIG9yIGEgc21hbGwgYW1vdW50IG9mIHRpbWVcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSB0aGlzLnVzZU5ld1NhZmFyaSA/IHRoaXMucGFnZUxvYWRNcyA6IDUwMDtcbiAgICAgIHRoaXMubmF2aWdhdGlvbkRlbGF5ID0gdXRpbC5jYW5jZWxsYWJsZURlbGF5KHRpbWVvdXQpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5uYXZpZ2F0aW9uRGVsYXk7XG4gICAgICAgIG5hdkV2ZW50TGlzdGVuZXIobnVsbCwgYCR7dGltZW91dH1tcyB0aW1lb3V0YCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gbm90aGluZyB0byBkbzogd2Ugb25seSBnZXQgaGVyZSBpZiB0aGUgcmVtb3RlIGRlYnVnZ2VyXG4gICAgICAgIC8vIGFscmVhZHkgbm90aWZpZWQgb2YgZnJhbWUgbmF2aWdhdGlvbiwgYW5kIHRoZSBkZWxheVxuICAgICAgICAvLyB3YXMgY2FuY2VsbGVkXG4gICAgICB9XG4gICAgfVxuICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICBpZiAobmF2RXZlbnRMaXN0ZW5lcikge1xuICAgICAgdGhpcy5ycGNDbGllbnQub2ZmKCdQYWdlLmZyYW1lTmF2aWdhdGVkJywgbmF2RXZlbnRMaXN0ZW5lcik7XG4gICAgfVxuICB9KTtcbn1cblxuXG5leHBvcnQgZGVmYXVsdCB7IGZyYW1lRGV0YWNoZWQsIHBhZ2VMb2FkLCBjYW5jZWxQYWdlTG9hZCwgcGFnZVVubG9hZCwgd2FpdEZvckRvbSwgY2hlY2tQYWdlSXNSZWFkeSwgbmF2VG9VcmwsIHdhaXRGb3JGcmFtZU5hdmlnYXRlZCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLFNBQVNNLGFBQWFBLENBQUEsRUFBSTtFQUN4QixJQUFJLENBQUNDLElBQUksQ0FBQ0MsZUFBTSxDQUFDQyxxQkFBcUIsQ0FBQztBQUN6QztBQUVBLGVBQWVDLFFBQVFBLENBQUVDLGtCQUFrQixFQUFFQyxrQkFBa0IsR0FBR0MsZUFBQyxDQUFDQyxJQUFJLEVBQUU7RUFBQSxJQUFBQyxtQkFBQTtFQUN4RSxNQUFNQyxTQUFTLEdBQUcsR0FBRztFQUNyQixJQUFJLENBQUNILGVBQUMsQ0FBQ0ksVUFBVSxFQUFBRixtQkFBQSxHQUFDSixrQkFBa0IsY0FBQUksbUJBQUEsdUJBQWxCQSxtQkFBQSxDQUFvQkcsV0FBVyxDQUFDLEVBQUU7SUFDbERDLGVBQUcsQ0FBQ0MsS0FBSyxDQUFFLGlEQUFnRCxDQUFDO0lBQzVEVCxrQkFBa0IsR0FBRyxJQUFJVSxlQUFNLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUNDLEtBQUssQ0FBQyxDQUFDO0VBQ2pEO0VBRUFKLGVBQUcsQ0FBQ0MsS0FBSyxDQUFDLHNDQUFzQyxDQUFDO0VBQ2pELElBQUksQ0FBQ0ksV0FBVyxHQUFHLElBQUk7RUFFdkIsTUFBTUMsTUFBTSxHQUFHLE1BQUFBLENBQUEsS0FBWTtJQUN6QixJQUFJLENBQUNDLGFBQWEsR0FBR0MsYUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQ1osU0FBUyxDQUFDO0lBQ3JELElBQUk7TUFDRixNQUFNLElBQUksQ0FBQ1UsYUFBYTtJQUMxQixDQUFDLENBQUMsT0FBT0csR0FBRyxFQUFFO01BQ1osSUFBSUEsR0FBRyxZQUFZQyxpQkFBQyxDQUFDQyxpQkFBaUIsRUFBRTtRQUd0QztNQUNGO0lBQ0Y7SUFHQSxJQUFJLENBQUMsSUFBSSxDQUFDQyxRQUFRLEVBQUU7TUFDbEJiLGVBQUcsQ0FBQ0MsS0FBSyxDQUFDLHFEQUFxRCxDQUFDO01BQ2hFO0lBQ0Y7SUFFQSxJQUFJUCxlQUFDLENBQUNJLFVBQVUsQ0FBQ0wsa0JBQWtCLENBQUMsRUFBRTtNQUNwQyxNQUFNQSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVCO0lBR0EsTUFBTXFCLFNBQVMsR0FBR3RCLGtCQUFrQixDQUFDTyxXQUFXLENBQUMsQ0FBQyxDQUFDZ0IsY0FBYztJQUNqRSxJQUFJLE9BQU0sSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDQyxVQUFVLEdBQUcsQ0FBQyxJQUFJSCxTQUFTLEdBQUcsSUFBSSxDQUFDRyxVQUFXLEVBQUU7TUFDekZqQixlQUFHLENBQUNDLEtBQUssQ0FBQyxlQUFlLENBQUM7TUFDMUIsSUFBSSxDQUFDSSxXQUFXLEdBQUcsS0FBSztJQUMxQixDQUFDLE1BQU07TUFDTEwsZUFBRyxDQUFDQyxLQUFLLENBQUMsOEJBQThCLENBQUM7TUFDekMsTUFBTUssTUFBTSxDQUFDLENBQUM7SUFDaEI7RUFDRixDQUFDO0VBQ0QsSUFBSTtJQUNGLE1BQU1BLE1BQU0sQ0FBQyxDQUFDO0VBQ2hCLENBQUMsU0FBUztJQUNSTixlQUFHLENBQUNDLEtBQUssQ0FBRSwwQkFBeUJULGtCQUFrQixDQUFDTyxXQUFXLENBQUMsQ0FBQyxDQUFDZ0IsY0FBYyxDQUFDRyxPQUFPLENBQUMsQ0FBQyxDQUFFLElBQUcsQ0FBQztJQUNuRyxJQUFJLENBQUNiLFdBQVcsR0FBRyxLQUFLO0VBQzFCO0FBQ0Y7QUFFQSxTQUFTYyxjQUFjQSxDQUFBLEVBQUk7RUFDekJuQixlQUFHLENBQUNDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQztFQUM1RCxJQUFJLENBQUNJLFdBQVcsR0FBRyxLQUFLO0VBQ3hCLElBQUksSUFBSSxDQUFDRSxhQUFhLEVBQUU7SUFDdEIsSUFBSSxDQUFDQSxhQUFhLENBQUNhLE1BQU0sQ0FBQyxDQUFDO0VBQzdCO0FBQ0Y7QUFFQSxlQUFlQyxVQUFVQSxDQUFBLEVBQUk7RUFDM0JyQixlQUFHLENBQUNDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztFQUMzQixNQUFNLElBQUksQ0FBQ3FCLFVBQVUsQ0FBQyxDQUFDO0FBQ3pCO0FBRUEsZUFBZUEsVUFBVUEsQ0FBRTlCLGtCQUFrQixFQUFFQyxrQkFBa0IsRUFBRTtFQUNqRU8sZUFBRyxDQUFDQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7RUFDL0IsTUFBTSxJQUFJLENBQUNWLFFBQVEsQ0FBQ0Msa0JBQWtCLEVBQUVDLGtCQUFrQixDQUFDO0FBQzdEO0FBRUEsZUFBZXVCLGdCQUFnQkEsQ0FBQSxFQUFJO0VBQ2pDLElBQUFPLGtCQUFXLEVBQUM7SUFBQ1YsUUFBUSxFQUFFLElBQUksQ0FBQ0E7RUFBUSxDQUFDLENBQUM7RUFFdENiLGVBQUcsQ0FBQ0MsS0FBSyxDQUFDLDhCQUE4QixDQUFDO0VBQ3pDLE1BQU11QixRQUFRLEdBQUcsc0JBQXNCO0VBQ3ZDLElBQUlDLFVBQVUsR0FBRyxTQUFTO0VBQzFCLElBQUk7SUFDRkEsVUFBVSxHQUFHLE1BQU1kLGlCQUFDLENBQUNlLE9BQU8sQ0FBQyxJQUFJLENBQUNDLE9BQU8sQ0FBQ0gsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUNJLE9BQU8sQ0FBQyxJQUFJLENBQUNDLGdCQUFnQixDQUFDO0VBQzNGLENBQUMsQ0FBQyxPQUFPbkIsR0FBRyxFQUFFO0lBQ1osSUFBSSxFQUFFQSxHQUFHLFlBQVlDLGlCQUFDLENBQUNtQixZQUFZLENBQUMsRUFBRTtNQUNwQyxNQUFNcEIsR0FBRztJQUNYO0lBQ0FWLGVBQUcsQ0FBQ0MsS0FBSyxDQUFFLHdDQUF1QyxJQUFJLENBQUM0QixnQkFBaUIsSUFBRyxDQUFDO0lBQzVFLE9BQU8sS0FBSztFQUNkO0VBQ0E3QixlQUFHLENBQUNDLEtBQUssQ0FBRSwyQkFBMEJ3QixVQUFXLEdBQUUsQ0FBQztFQUVuRCxPQUFPQSxVQUFVLEtBQUssVUFBVTtBQUNsQztBQUVBLGVBQWVNLFFBQVFBLENBQUVDLEdBQUcsRUFBRXZDLGtCQUFrQixFQUFFO0VBQ2hELElBQUE4QixrQkFBVyxFQUFDO0lBQUNWLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVE7SUFBRW9CLFNBQVMsRUFBRSxJQUFJLENBQUNBO0VBQVMsQ0FBQyxDQUFDO0VBRWpFLElBQUksQ0FBQ0MsaUJBQWlCLEdBQUcsSUFBSTtFQUU3QixJQUFJO0lBQ0ZsQyxlQUFHLENBQUNDLEtBQUssQ0FBRSwyQkFBMEIrQixHQUFJLEdBQUUsQ0FBQztJQUc1QyxNQUFNRyxtQkFBbUIsR0FBRyxJQUFJLENBQUNDLHFCQUFxQixDQUFDLENBQUM7SUFFeEQsTUFBTSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0MsSUFBSSxDQUFDLGVBQWUsRUFBRTtNQUN6Q04sR0FBRztNQUNIbkIsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUTtNQUN2Qm9CLFNBQVMsRUFBRSxJQUFJLENBQUNBO0lBQ2xCLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxJQUFJLENBQUNNLFlBQVksRUFBRTtNQUV0QixNQUFNNUIsaUJBQUMsQ0FBQzZCLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDckI7SUFHQSxNQUFNTCxtQkFBbUI7SUFFekIsTUFBTSxJQUFJLENBQUNiLFVBQVUsQ0FBQyxJQUFJcEIsZUFBTSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDQyxLQUFLLENBQUMsQ0FBQyxFQUFFWCxrQkFBa0IsQ0FBQztJQUlyRSxNQUFNLElBQUksQ0FBQzRDLFNBQVMsQ0FBQ0MsSUFBSSxDQUFDLGdCQUFnQixFQUFFO01BQzFDekIsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUTtNQUN2Qm9CLFNBQVMsRUFBRSxJQUFJLENBQUNBO0lBQ2xCLENBQUMsQ0FBQztFQUNKLENBQUMsU0FBUztJQUNSLElBQUksQ0FBQ0MsaUJBQWlCLEdBQUcsS0FBSztFQUNoQztBQUNGO0FBRUEsZUFBZUUscUJBQXFCQSxDQUFBLEVBQUk7RUFDdEMsSUFBSUssZ0JBQWdCO0VBQ3BCLE9BQU8sTUFBTSxJQUFJOUIsaUJBQUMsQ0FBQyxNQUFPZSxPQUFPLElBQUs7SUFDcEMxQixlQUFHLENBQUNDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztJQUNuRCxNQUFNRyxLQUFLLEdBQUcsSUFBSUYsZUFBTSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDQyxLQUFLLENBQUMsQ0FBQztJQUl4Q3FDLGdCQUFnQixHQUFHQSxDQUFDL0IsR0FBRyxFQUFFZ0MsS0FBSyxLQUFLO01BQ2pDMUMsZUFBRyxDQUFDQyxLQUFLLENBQUUsc0JBQXFCRyxLQUFLLENBQUNMLFdBQVcsQ0FBQyxDQUFDLENBQUNnQixjQUFjLENBQUNHLE9BQU8sQ0FBQyxDQUFDLENBQUUsWUFBV3dCLEtBQU0sRUFBQyxDQUFDO01BQ2pHLElBQUksQ0FBQyxJQUFJLENBQUNDLDRCQUE0QixJQUFJLENBQUMsSUFBSSxDQUFDdEMsV0FBVyxFQUFFO1FBQzNEcUIsT0FBTyxDQUFDZ0IsS0FBSyxDQUFDO01BQ2hCLENBQUMsTUFBTTtRQUNMMUMsZUFBRyxDQUFDQyxLQUFLLENBQUMsbURBQW1ELEdBQ25ELGlDQUFpQyxDQUFDO1FBQzVDLElBQUksQ0FBQzBDLDRCQUE0QixHQUFHLEtBQUs7TUFDM0M7TUFDQSxJQUFJLElBQUksQ0FBQ0MsZUFBZSxFQUFFO1FBQ3hCLElBQUksQ0FBQ0EsZUFBZSxDQUFDeEIsTUFBTSxDQUFDLENBQUM7TUFDL0I7SUFDRixDQUFDO0lBRUQsSUFBSSxDQUFDaUIsU0FBUyxDQUFDUSxJQUFJLENBQUMscUJBQXFCLEVBQUVKLGdCQUFnQixDQUFDO0lBSTVELElBQUksQ0FBQyxJQUFJLENBQUNGLFlBQVksSUFBSSxJQUFJLENBQUN0QixVQUFVLElBQUksQ0FBQyxFQUFFO01BRTlDLE1BQU1XLE9BQU8sR0FBRyxJQUFJLENBQUNXLFlBQVksR0FBRyxJQUFJLENBQUN0QixVQUFVLEdBQUcsR0FBRztNQUN6RCxJQUFJLENBQUMyQixlQUFlLEdBQUdwQyxhQUFJLENBQUNDLGdCQUFnQixDQUFDbUIsT0FBTyxDQUFDO01BQ3JELElBQUk7UUFDRixNQUFNLElBQUksQ0FBQ2dCLGVBQWU7UUFDMUJILGdCQUFnQixDQUFDLElBQUksRUFBRyxHQUFFYixPQUFRLFlBQVcsQ0FBQztNQUNoRCxDQUFDLENBQUMsT0FBT2xCLEdBQUcsRUFBRSxDQUlkO0lBQ0Y7RUFDRixDQUFDLENBQUMsQ0FBQ29DLE9BQU8sQ0FBQyxNQUFNO0lBQ2YsSUFBSUwsZ0JBQWdCLEVBQUU7TUFDcEIsSUFBSSxDQUFDSixTQUFTLENBQUNVLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRU4sZ0JBQWdCLENBQUM7SUFDN0Q7RUFDRixDQUFDLENBQUM7QUFDSjtBQUFDLElBQUFPLFFBQUEsR0FHYztFQUFFN0QsYUFBYTtFQUFFSSxRQUFRO0VBQUU0QixjQUFjO0VBQUVFLFVBQVU7RUFBRUMsVUFBVTtFQUFFTixnQkFBZ0I7RUFBRWUsUUFBUTtFQUFFSztBQUFzQixDQUFDO0FBQUFhLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBIn0=
|
|
221
|
+
//# sourceMappingURL=navigate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigate.js","names":["_logger","_interopRequireDefault","require","_utils","_events","_support","_lodash","_bluebird","frameDetached","emit","events","EVENT_FRAMES_DETACHED","pageLoad","startPageLoadTimer","pageLoadVerifyHook","_","noop","_startPageLoadTimer","timeoutMs","isFunction","getDuration","log","debug","timing","Timer","start","pageLoading","verify","pageLoadDelay","util","cancellableDelay","err","B","CancellationError","appIdKey","elapsedMs","asMilliSeconds","checkPageIsReady","pageLoadMs","toFixed","cancelPageLoad","cancel","pageUnload","waitForDom","checkParams","readyCmd","readyState","resolve","execute","timeout","pageReadyTimeout","TimeoutError","navToUrl","url","pageIdKey","_navigatingToPage","waitForFramePromise","waitForFrameNavigated","rpcClient","send","useNewSafari","delay","navEventListener","value","allowNavigationWithoutReload","navigationDelay","once","finally","off","_default","exports","default"],"sources":["../../../lib/mixins/navigate.js"],"sourcesContent":["import log from '../logger';\nimport { checkParams } from '../utils';\nimport events from './events';\nimport { timing, util } from '@appium/support';\nimport _ from 'lodash';\nimport B from 'bluebird';\n\n\nfunction frameDetached () {\n this.emit(events.EVENT_FRAMES_DETACHED);\n}\n\nasync function pageLoad (startPageLoadTimer, pageLoadVerifyHook = _.noop) {\n const timeoutMs = 500;\n if (!_.isFunction(startPageLoadTimer?.getDuration)) {\n log.debug(`Page load timer not a timer. Creating new timer`);\n startPageLoadTimer = new timing.Timer().start();\n }\n\n log.debug('Page loaded, verifying whether ready');\n this.pageLoading = true;\n\n const verify = async () => {\n this.pageLoadDelay = util.cancellableDelay(timeoutMs);\n try {\n await this.pageLoadDelay;\n } catch (err) {\n if (err instanceof B.CancellationError) {\n // if the promise has been cancelled\n // we want to skip checking the readiness\n return;\n }\n }\n\n // we can get this called in the middle of trying to find a new app\n if (!this.appIdKey) {\n log.debug('Not connected to an application. Ignoring page load');\n return;\n }\n\n if (_.isFunction(pageLoadVerifyHook)) {\n await pageLoadVerifyHook();\n }\n\n // if we are ready, or we've spend too much time on this\n const elapsedMs = startPageLoadTimer.getDuration().asMilliSeconds;\n if (await this.checkPageIsReady() || (this.pageLoadMs > 0 && elapsedMs > this.pageLoadMs)) {\n log.debug('Page is ready');\n this.pageLoading = false;\n } else {\n log.debug('Page was not ready, retrying');\n await verify();\n }\n };\n try {\n await verify();\n } finally {\n log.debug(`Page load completed in ${startPageLoadTimer.getDuration().asMilliSeconds.toFixed(0)}ms`);\n this.pageLoading = false;\n }\n}\n\nfunction cancelPageLoad () {\n log.debug('Unregistering from page readiness notifications');\n this.pageLoading = false;\n if (this.pageLoadDelay) {\n this.pageLoadDelay.cancel();\n }\n}\n\nasync function pageUnload () {\n log.debug('Page unloading');\n await this.waitForDom();\n}\n\nasync function waitForDom (startPageLoadTimer, pageLoadVerifyHook) {\n log.debug('Waiting for dom...');\n await this.pageLoad(startPageLoadTimer, pageLoadVerifyHook);\n}\n\nasync function checkPageIsReady () {\n checkParams({appIdKey: this.appIdKey});\n\n log.debug('Checking document readyState');\n const readyCmd = 'document.readyState;';\n let readyState = 'loading';\n try {\n readyState = await B.resolve(this.execute(readyCmd, true)).timeout(this.pageReadyTimeout);\n } catch (err) {\n if (!(err instanceof B.TimeoutError)) {\n throw err;\n }\n log.debug(`Page readiness check timed out after ${this.pageReadyTimeout}ms`);\n return false;\n }\n log.debug(`Document readyState is '${readyState}'`);\n\n return readyState === 'complete';\n}\n\nasync function navToUrl (url, pageLoadVerifyHook) {\n checkParams({appIdKey: this.appIdKey, pageIdKey: this.pageIdKey});\n\n this._navigatingToPage = true;\n\n try {\n log.debug(`Navigating to new URL: '${url}'`);\n\n // begin listening for frame navigation event, which will be waited for later\n const waitForFramePromise = this.waitForFrameNavigated();\n\n await this.rpcClient.send('Page.navigate', {\n url,\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n\n if (!this.useNewSafari) {\n // a small pause for the browser to catch up\n await B.delay(1000);\n }\n\n // wait until the page has been navigated\n await waitForFramePromise;\n\n await this.waitForDom(new timing.Timer().start(), pageLoadVerifyHook);\n\n // enable console logging, so we get the events (otherwise we only\n // get notified when navigating to a local page\n await this.rpcClient.send('Console.enable', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n } finally {\n this._navigatingToPage = false;\n }\n}\n\nasync function waitForFrameNavigated () {\n let navEventListener;\n return await new B(async (resolve) => {\n log.debug('Waiting for frame navigated message...');\n const start = new timing.Timer().start();\n\n // add a handler for the `Page.frameNavigated` message\n // from the remote debugger\n navEventListener = (err, value) => {\n log.debug(`Frame navigated in ${start.getDuration().asMilliSeconds.toFixed(0)}ms from: ${value}`);\n if (!this.allowNavigationWithoutReload && !this.pageLoading) {\n resolve(value);\n } else {\n log.debug('Frame navigated but we were warned about it, not ' +\n 'considering page state unloaded');\n this.allowNavigationWithoutReload = false;\n }\n if (this.navigationDelay) {\n this.navigationDelay.cancel();\n }\n };\n\n this.rpcClient.once('Page.frameNavigated', navEventListener);\n\n // timeout, in case remote debugger doesn't respond,\n // or takes a long time\n if (!this.useNewSafari || this.pageLoadMs >= 0) {\n // use pageLoadMs, or a small amount of time\n const timeout = this.useNewSafari ? this.pageLoadMs : 500;\n this.navigationDelay = util.cancellableDelay(timeout);\n try {\n await this.navigationDelay;\n navEventListener(null, `${timeout}ms timeout`);\n } catch (err) {\n // nothing to do: we only get here if the remote debugger\n // already notified of frame navigation, and the delay\n // was cancelled\n }\n }\n }).finally(() => {\n if (navEventListener) {\n this.rpcClient.off('Page.frameNavigated', navEventListener);\n }\n });\n}\n\n\nexport default { frameDetached, pageLoad, cancelPageLoad, pageUnload, waitForDom, checkPageIsReady, navToUrl, waitForFrameNavigated };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../../lib/mixins/navigate.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default getProtocolCommand;
|
|
2
|
+
export function getProtocolCommand(id: any, method: any, opts?: {}): {
|
|
3
|
+
id: any;
|
|
4
|
+
method: any;
|
|
5
|
+
params: {
|
|
6
|
+
objectGroup: string;
|
|
7
|
+
includeCommandLineAPI: boolean;
|
|
8
|
+
doNotPauseOnExceptionsAndMuteConsole: boolean;
|
|
9
|
+
emulateUserGesture: boolean;
|
|
10
|
+
generatePreview: boolean;
|
|
11
|
+
saveResult: boolean;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/protocol/index.js"],"names":[],"mappings":";AAqNA;;;;;;;;;;;EAWC"}
|