appium-remote-debugger 10.0.3 → 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 +7 -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 +25 -15
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-debugger.d.ts","sourceRoot":"","sources":["../../lib/remote-debugger.js"],"names":[],"mappings":"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"}
|
|
@@ -1,238 +1,268 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
require("
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
var _asyncLock = _interopRequireDefault(require("async-lock"));
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RPC_RESPONSE_TIMEOUT_MS = exports.REMOTE_DEBUGGER_PORT = exports.RemoteDebugger = void 0;
|
|
7
|
+
const events_1 = require("events");
|
|
8
|
+
const logger_1 = __importDefault(require("./logger"));
|
|
9
|
+
const rpc_1 = require("./rpc");
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
const mixins_1 = require("./mixins");
|
|
12
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
13
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
14
|
+
const path_1 = __importDefault(require("path"));
|
|
15
|
+
const async_lock_1 = __importDefault(require("async-lock"));
|
|
16
|
+
const rpc_client_1 = __importDefault(require("./rpc/rpc-client"));
|
|
18
17
|
const REMOTE_DEBUGGER_PORT = 27753;
|
|
19
18
|
exports.REMOTE_DEBUGGER_PORT = REMOTE_DEBUGGER_PORT;
|
|
20
19
|
const SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';
|
|
20
|
+
/* How many milliseconds to wait for webkit to return a response before timing out */
|
|
21
21
|
const RPC_RESPONSE_TIMEOUT_MS = 5000;
|
|
22
22
|
exports.RPC_RESPONSE_TIMEOUT_MS = RPC_RESPONSE_TIMEOUT_MS;
|
|
23
23
|
const PAGE_READY_TIMEOUT = 5000;
|
|
24
24
|
const GARBAGE_COLLECT_TIMEOUT = 5000;
|
|
25
|
-
class RemoteDebugger extends
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
25
|
+
class RemoteDebugger extends events_1.EventEmitter {
|
|
26
|
+
/*
|
|
27
|
+
* The constructor takes an opts hash with the following properties:
|
|
28
|
+
* - bundleId - id of the app being connected to
|
|
29
|
+
* - additionalBundleIds - array of possible bundle ids that the inspector
|
|
30
|
+
* could return
|
|
31
|
+
* - platformVersion - version of iOS
|
|
32
|
+
* - useNewSafari - for web inspector, whether this is a new Safari instance
|
|
33
|
+
* - pageLoadMs - the time, in ms, that should be waited for page loading
|
|
34
|
+
* - host - the remote debugger's host address
|
|
35
|
+
* - port - the remote debugger port through which to communicate
|
|
36
|
+
* - logAllCommunication - log plists sent and received from Web Inspector
|
|
37
|
+
* - logAllCommunicationHexDump - log communication from Web Inspector as hex dump
|
|
38
|
+
* - socketChunkSize - size, in bytes, of chunks of data sent to Web Inspector (real device only)
|
|
39
|
+
* - webInspectorMaxFrameLength - The maximum size in bytes of a single data frame
|
|
40
|
+
* in the device communication protocol
|
|
41
|
+
*/
|
|
42
|
+
constructor(opts = {}) {
|
|
43
|
+
super();
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
45
|
+
logger_1.default.info(`Remote Debugger version ${require(path_1.default.resolve((0, utils_1.getModuleRoot)(), 'package.json')).version}`);
|
|
46
|
+
const { bundleId, additionalBundleIds = [], platformVersion, isSafari = true, includeSafari = false, useNewSafari = false, pageLoadMs, host, port = REMOTE_DEBUGGER_PORT, socketPath, pageReadyTimeout = PAGE_READY_TIMEOUT, remoteDebugProxy, garbageCollectOnExecute = false, logFullResponse = false, logAllCommunication = false, logAllCommunicationHexDump = false, webInspectorMaxFrameLength, socketChunkSize, fullPageInitialization, } = opts;
|
|
47
|
+
this.bundleId = bundleId;
|
|
48
|
+
this.additionalBundleIds = additionalBundleIds;
|
|
49
|
+
this.platformVersion = platformVersion;
|
|
50
|
+
this.isSafari = isSafari;
|
|
51
|
+
this.includeSafari = includeSafari;
|
|
52
|
+
this.useNewSafari = useNewSafari;
|
|
53
|
+
this.pageLoadMs = pageLoadMs;
|
|
54
|
+
logger_1.default.debug(`useNewSafari --> ${this.useNewSafari}`);
|
|
55
|
+
this.garbageCollectOnExecute = garbageCollectOnExecute;
|
|
56
|
+
this.host = host;
|
|
57
|
+
this.port = port;
|
|
58
|
+
this.socketPath = socketPath;
|
|
59
|
+
this.remoteDebugProxy = remoteDebugProxy;
|
|
60
|
+
this.pageReadyTimeout = pageReadyTimeout;
|
|
61
|
+
this.logAllCommunication = lodash_1.default.isNil(logAllCommunication) ? !!logFullResponse : !!logAllCommunication;
|
|
62
|
+
this.logAllCommunicationHexDump = logAllCommunicationHexDump;
|
|
63
|
+
this.socketChunkSize = socketChunkSize;
|
|
64
|
+
if (lodash_1.default.isInteger(webInspectorMaxFrameLength)) {
|
|
65
|
+
this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;
|
|
66
|
+
}
|
|
67
|
+
this.fullPageInitialization = fullPageInitialization;
|
|
68
|
+
this._lock = new async_lock_1.default();
|
|
69
|
+
}
|
|
70
|
+
setup() {
|
|
71
|
+
// app handling configuration
|
|
72
|
+
this.appDict = {};
|
|
73
|
+
this.appIdKey = null;
|
|
74
|
+
this.pageIdKey = null;
|
|
75
|
+
this.pageLoading = false;
|
|
76
|
+
this._navigatingToPage = false;
|
|
77
|
+
this.allowNavigationWithoutReload = false;
|
|
78
|
+
this.rpcClient = null;
|
|
79
|
+
this._clientEventListeners = {};
|
|
80
|
+
}
|
|
81
|
+
teardown() {
|
|
82
|
+
logger_1.default.debug('Cleaning up listeners');
|
|
83
|
+
this.appDict = {};
|
|
84
|
+
this.appIdKey = null;
|
|
85
|
+
this.pageIdKey = null;
|
|
86
|
+
this.pageLoading = false;
|
|
87
|
+
this.rpcClient = null;
|
|
88
|
+
this.removeAllListeners(RemoteDebugger.EVENT_PAGE_CHANGE);
|
|
89
|
+
this.removeAllListeners(RemoteDebugger.EVENT_DISCONNECT);
|
|
90
|
+
}
|
|
91
|
+
initRpcClient() {
|
|
92
|
+
this.rpcClient = new rpc_1.RpcClientSimulator({
|
|
93
|
+
bundleId: this.bundleId,
|
|
94
|
+
platformVersion: this.platformVersion,
|
|
95
|
+
isSafari: this.isSafari,
|
|
96
|
+
host: this.host,
|
|
97
|
+
port: this.port,
|
|
98
|
+
socketPath: this.socketPath,
|
|
99
|
+
messageProxy: this.remoteDebugProxy,
|
|
100
|
+
logAllCommunication: this.logAllCommunication,
|
|
101
|
+
logAllCommunicationHexDump: this.logAllCommunicationHexDump,
|
|
102
|
+
fullPageInitialization: this.fullPageInitialization,
|
|
103
|
+
webInspectorMaxFrameLength: this.webInspectorMaxFrameLength,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
get isConnected() {
|
|
107
|
+
return !!this.rpcClient?.isConnected;
|
|
108
|
+
}
|
|
109
|
+
async launchSafari() {
|
|
110
|
+
if (!this.rpcClient) {
|
|
111
|
+
throw new Error(`rpcClient is undefined. Has 'initRpcClient' been called before?`);
|
|
112
|
+
}
|
|
113
|
+
await this.rpcClient.send('launchApplication', {
|
|
114
|
+
bundleId: SAFARI_BUNDLE_ID
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
async startTimeline(fn) {
|
|
118
|
+
if (!this.rpcClient) {
|
|
119
|
+
throw new Error(`rpcClient is undefined. Has 'initRpcClient' been called before?`);
|
|
120
|
+
}
|
|
121
|
+
logger_1.default.debug('Starting to record the timeline');
|
|
122
|
+
this.rpcClient.on('Timeline.eventRecorded', fn);
|
|
123
|
+
return await this.rpcClient.send('Timeline.start', {
|
|
124
|
+
appIdKey: this.appIdKey,
|
|
125
|
+
pageIdKey: this.pageIdKey,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
async stopTimeline() {
|
|
129
|
+
if (!this.rpcClient) {
|
|
130
|
+
throw new Error(`rpcClient is undefined. Has 'initRpcClient' been called before?`);
|
|
131
|
+
}
|
|
132
|
+
logger_1.default.debug('Stopping to record the timeline');
|
|
133
|
+
await this.rpcClient.send('Timeline.stop', {
|
|
134
|
+
appIdKey: this.appIdKey,
|
|
135
|
+
pageIdKey: this.pageIdKey,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/*
|
|
139
|
+
* Keep track of the client event listeners so they can be removed
|
|
140
|
+
*/
|
|
141
|
+
addClientEventListener(eventName, listener) {
|
|
142
|
+
if (!this.rpcClient) {
|
|
143
|
+
throw new Error(`rpcClient is undefined. Has 'initRpcClient' been called before?`);
|
|
144
|
+
}
|
|
145
|
+
this._clientEventListeners[eventName] = this._clientEventListeners[eventName] || [];
|
|
146
|
+
this._clientEventListeners[eventName].push(listener);
|
|
147
|
+
this.rpcClient.on(eventName, listener);
|
|
148
|
+
}
|
|
149
|
+
removeClientEventListener(eventName) {
|
|
150
|
+
if (!this.rpcClient) {
|
|
151
|
+
throw new Error(`rpcClient is undefined. Has 'initRpcClient' been called before?`);
|
|
152
|
+
}
|
|
153
|
+
for (const listener of (this._clientEventListeners[eventName] || [])) {
|
|
154
|
+
this.rpcClient.off(eventName, listener);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
startConsole(listener) {
|
|
158
|
+
logger_1.default.debug('Starting to listen for JavaScript console');
|
|
159
|
+
this.addClientEventListener('Console.messageAdded', listener);
|
|
160
|
+
this.addClientEventListener('Console.messageRepeatCountUpdated', listener);
|
|
161
|
+
}
|
|
162
|
+
stopConsole() {
|
|
163
|
+
logger_1.default.debug('Stopping to listen for JavaScript console');
|
|
164
|
+
this.removeClientEventListener('Console.messageAdded');
|
|
165
|
+
this.removeClientEventListener('Console.messageRepeatCountUpdated');
|
|
166
|
+
}
|
|
167
|
+
startNetwork(listener) {
|
|
168
|
+
logger_1.default.debug('Starting to listen for network events');
|
|
169
|
+
this.addClientEventListener('NetworkEvent', listener);
|
|
170
|
+
}
|
|
171
|
+
stopNetwork() {
|
|
172
|
+
logger_1.default.debug('Stopping to listen for network events');
|
|
173
|
+
this.removeClientEventListener('NetworkEvent');
|
|
174
|
+
}
|
|
175
|
+
set allowNavigationWithoutReload(allow) {
|
|
176
|
+
this._allowNavigationWithoutReload = allow;
|
|
177
|
+
}
|
|
178
|
+
get allowNavigationWithoutReload() {
|
|
179
|
+
return this._allowNavigationWithoutReload;
|
|
180
|
+
}
|
|
181
|
+
// Potentially this does not work for mobile safari
|
|
182
|
+
async overrideUserAgent(value) {
|
|
183
|
+
logger_1.default.debug('Setting overrideUserAgent');
|
|
184
|
+
if (!this.rpcClient) {
|
|
185
|
+
throw new Error(`rpcClient is undefined. Has 'initRpcClient' been called before?`);
|
|
186
|
+
}
|
|
187
|
+
return await this.rpcClient.send('Page.overrideUserAgent', {
|
|
188
|
+
appIdKey: this.appIdKey,
|
|
189
|
+
pageIdKey: this.pageIdKey,
|
|
190
|
+
value
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
async getCookies() {
|
|
194
|
+
logger_1.default.debug('Getting cookies');
|
|
195
|
+
if (!this.rpcClient) {
|
|
196
|
+
throw new Error(`rpcClient is undefined. Has 'initRpcClient' been called before?`);
|
|
197
|
+
}
|
|
198
|
+
return await this.rpcClient.send('Page.getCookies', {
|
|
199
|
+
appIdKey: this.appIdKey,
|
|
200
|
+
pageIdKey: this.pageIdKey
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
async setCookie(cookie) {
|
|
204
|
+
logger_1.default.debug('Setting cookie');
|
|
205
|
+
if (!this.rpcClient) {
|
|
206
|
+
throw new Error(`rpcClient is undefined. Has 'initRpcClient' been called before?`);
|
|
207
|
+
}
|
|
208
|
+
return await this.rpcClient.send('Page.setCookie', {
|
|
209
|
+
appIdKey: this.appIdKey,
|
|
210
|
+
pageIdKey: this.pageIdKey,
|
|
211
|
+
cookie
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
async deleteCookie(cookieName, url) {
|
|
215
|
+
logger_1.default.debug(`Deleting cookie '${cookieName}' on '${url}'`);
|
|
216
|
+
if (!this.rpcClient) {
|
|
217
|
+
throw new Error(`rpcClient is undefined. Has 'initRpcClient' been called before?`);
|
|
218
|
+
}
|
|
219
|
+
return await this.rpcClient.send('Page.deleteCookie', {
|
|
220
|
+
appIdKey: this.appIdKey,
|
|
221
|
+
pageIdKey: this.pageIdKey,
|
|
222
|
+
cookieName,
|
|
223
|
+
url,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
async garbageCollect(timeoutMs = GARBAGE_COLLECT_TIMEOUT) {
|
|
227
|
+
logger_1.default.debug(`Garbage collecting with ${timeoutMs}ms timeout`);
|
|
228
|
+
if (!this.rpcClient) {
|
|
229
|
+
throw new Error(`rpcClient is undefined. Has 'initRpcClient' been called before?`);
|
|
230
|
+
}
|
|
231
|
+
try {
|
|
232
|
+
(0, utils_1.checkParams)({ appIdKey: this.appIdKey, pageIdKey: this.pageIdKey });
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
logger_1.default.debug(`Unable to collect garbage at this time`);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
await bluebird_1.default.resolve(this.rpcClient.send('Heap.gc', {
|
|
239
|
+
appIdKey: this.appIdKey,
|
|
240
|
+
pageIdKey: this.pageIdKey,
|
|
241
|
+
})).timeout(timeoutMs)
|
|
242
|
+
.then(function gcSuccess() {
|
|
243
|
+
logger_1.default.debug(`Garbage collection successful`);
|
|
244
|
+
}).catch(function gcError(err) {
|
|
245
|
+
if (err instanceof bluebird_1.default.TimeoutError) {
|
|
246
|
+
logger_1.default.debug(`Garbage collection timed out after ${timeoutMs}ms`);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
logger_1.default.debug(`Unable to collect garbage: ${err.message}`);
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
async useAppDictLock(fn) {
|
|
254
|
+
return await this._lock.acquire('appDict', fn);
|
|
255
|
+
}
|
|
256
|
+
get skippedApps() {
|
|
257
|
+
return this._skippedApps || [];
|
|
258
|
+
}
|
|
228
259
|
}
|
|
229
260
|
exports.RemoteDebugger = RemoteDebugger;
|
|
230
|
-
for (const [name, fn] of
|
|
231
|
-
|
|
261
|
+
for (const [name, fn] of lodash_1.default.toPairs(mixins_1.mixins)) {
|
|
262
|
+
RemoteDebugger.prototype[name] = fn;
|
|
232
263
|
}
|
|
233
|
-
for (const [name, event] of
|
|
234
|
-
|
|
264
|
+
for (const [name, event] of lodash_1.default.toPairs(mixins_1.events)) {
|
|
265
|
+
RemoteDebugger[name] = event;
|
|
235
266
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JwYyIsIl91dGlscyIsIl9taXhpbnMiLCJfbG9kYXNoIiwiX2JsdWViaXJkIiwiX3BhdGgiLCJfYXN5bmNMb2NrIiwiUkVNT1RFX0RFQlVHR0VSX1BPUlQiLCJleHBvcnRzIiwiU0FGQVJJX0JVTkRMRV9JRCIsIlJQQ19SRVNQT05TRV9USU1FT1VUX01TIiwiUEFHRV9SRUFEWV9USU1FT1VUIiwiR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQiLCJSZW1vdGVEZWJ1Z2dlciIsIkV2ZW50RW1pdHRlciIsImNvbnN0cnVjdG9yIiwib3B0cyIsImxvZyIsImluZm8iLCJwYXRoIiwicmVzb2x2ZSIsImdldE1vZHVsZVJvb3QiLCJ2ZXJzaW9uIiwiYnVuZGxlSWQiLCJhZGRpdGlvbmFsQnVuZGxlSWRzIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNTYWZhcmkiLCJpbmNsdWRlU2FmYXJpIiwidXNlTmV3U2FmYXJpIiwicGFnZUxvYWRNcyIsImhvc3QiLCJwb3J0Iiwic29ja2V0UGF0aCIsInBhZ2VSZWFkeVRpbWVvdXQiLCJyZW1vdGVEZWJ1Z1Byb3h5IiwiZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUiLCJsb2dGdWxsUmVzcG9uc2UiLCJsb2dBbGxDb21tdW5pY2F0aW9uIiwibG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAiLCJ3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCIsInNvY2tldENodW5rU2l6ZSIsImZ1bGxQYWdlSW5pdGlhbGl6YXRpb24iLCJkZWJ1ZyIsIl8iLCJpc05pbCIsImlzSW50ZWdlciIsIl9sb2NrIiwiQXN5bmNMb2NrIiwic2V0dXAiLCJhcHBEaWN0IiwiYXBwSWRLZXkiLCJwYWdlSWRLZXkiLCJwYWdlTG9hZGluZyIsIl9uYXZpZ2F0aW5nVG9QYWdlIiwiYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCIsInJwY0NsaWVudCIsIl9jbGllbnRFdmVudExpc3RlbmVycyIsInRlYXJkb3duIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiRVZFTlRfUEFHRV9DSEFOR0UiLCJFVkVOVF9ESVNDT05ORUNUIiwiaW5pdFJwY0NsaWVudCIsIlJwY0NsaWVudFNpbXVsYXRvciIsIm1lc3NhZ2VQcm94eSIsImlzQ29ubmVjdGVkIiwiX3RoaXMkcnBjQ2xpZW50IiwibGF1bmNoU2FmYXJpIiwic2VuZCIsInN0YXJ0VGltZWxpbmUiLCJmbiIsIm9uIiwic3RvcFRpbWVsaW5lIiwiYWRkQ2xpZW50RXZlbnRMaXN0ZW5lciIsImV2ZW50TmFtZSIsImxpc3RlbmVyIiwicHVzaCIsInJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIiLCJvZmYiLCJzdGFydENvbnNvbGUiLCJzdG9wQ29uc29sZSIsInN0YXJ0TmV0d29yayIsInN0b3BOZXR3b3JrIiwiYWxsb3ciLCJfYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCIsIm92ZXJyaWRlVXNlckFnZW50IiwidmFsdWUiLCJnZXRDb29raWVzIiwic2V0Q29va2llIiwiY29va2llIiwiZGVsZXRlQ29va2llIiwiY29va2llTmFtZSIsInVybCIsImdhcmJhZ2VDb2xsZWN0IiwidGltZW91dE1zIiwiY2hlY2tQYXJhbXMiLCJlcnIiLCJCIiwidGltZW91dCIsInRoZW4iLCJnY1N1Y2Nlc3MiLCJjYXRjaCIsImdjRXJyb3IiLCJUaW1lb3V0RXJyb3IiLCJtZXNzYWdlIiwidXNlQXBwRGljdExvY2siLCJhY3F1aXJlIiwic2tpcHBlZEFwcHMiLCJfc2tpcHBlZEFwcHMiLCJuYW1lIiwidG9QYWlycyIsIm1peGlucyIsInByb3RvdHlwZSIsImV2ZW50IiwiZXZlbnRzIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3JlbW90ZS1kZWJ1Z2dlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBScGNDbGllbnRTaW11bGF0b3IgfSBmcm9tICcuL3JwYyc7XG5pbXBvcnQgeyBjaGVja1BhcmFtcywgZ2V0TW9kdWxlUm9vdCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgbWl4aW5zLCBldmVudHMgfSBmcm9tICcuL21peGlucyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgQXN5bmNMb2NrIGZyb20gJ2FzeW5jLWxvY2snO1xuXG5jb25zdCBSRU1PVEVfREVCVUdHRVJfUE9SVCA9IDI3NzUzO1xuY29uc3QgU0FGQVJJX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUubW9iaWxlc2FmYXJpJztcblxuLyogSG93IG1hbnkgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHdlYmtpdCB0byByZXR1cm4gYSByZXNwb25zZSBiZWZvcmUgdGltaW5nIG91dCAqL1xuY29uc3QgUlBDX1JFU1BPTlNFX1RJTUVPVVRfTVMgPSA1MDAwO1xuXG5jb25zdCBQQUdFX1JFQURZX1RJTUVPVVQgPSA1MDAwO1xuXG5jb25zdCBHQVJCQUdFX0NPTExFQ1RfVElNRU9VVCA9IDUwMDA7XG5cblxuY2xhc3MgUmVtb3RlRGVidWdnZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICAvKlxuICAgKiBUaGUgY29uc3RydWN0b3IgdGFrZXMgYW4gb3B0cyBoYXNoIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKiAgIC0gYnVuZGxlSWQgLSBpZCBvZiB0aGUgYXBwIGJlaW5nIGNvbm5lY3RlZCB0b1xuICAgKiAgIC0gYWRkaXRpb25hbEJ1bmRsZUlkcyAtIGFycmF5IG9mIHBvc3NpYmxlIGJ1bmRsZSBpZHMgdGhhdCB0aGUgaW5zcGVjdG9yXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bGQgcmV0dXJuXG4gICAqICAgLSBwbGF0Zm9ybVZlcnNpb24gLSB2ZXJzaW9uIG9mIGlPU1xuICAgKiAgIC0gdXNlTmV3U2FmYXJpIC0gZm9yIHdlYiBpbnNwZWN0b3IsIHdoZXRoZXIgdGhpcyBpcyBhIG5ldyBTYWZhcmkgaW5zdGFuY2VcbiAgICogICAtIHBhZ2VMb2FkTXMgLSB0aGUgdGltZSwgaW4gbXMsIHRoYXQgc2hvdWxkIGJlIHdhaXRlZCBmb3IgcGFnZSBsb2FkaW5nXG4gICAqICAgLSBob3N0IC0gdGhlIHJlbW90ZSBkZWJ1Z2dlcidzIGhvc3QgYWRkcmVzc1xuICAgKiAgIC0gcG9ydCAtIHRoZSByZW1vdGUgZGVidWdnZXIgcG9ydCB0aHJvdWdoIHdoaWNoIHRvIGNvbW11bmljYXRlXG4gICAqICAgLSBsb2dBbGxDb21tdW5pY2F0aW9uIC0gbG9nIHBsaXN0cyBzZW50IGFuZCByZWNlaXZlZCBmcm9tIFdlYiBJbnNwZWN0b3JcbiAgICogICAtIGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIC0gbG9nIGNvbW11bmljYXRpb24gZnJvbSBXZWIgSW5zcGVjdG9yIGFzIGhleCBkdW1wXG4gICAqICAgLSBzb2NrZXRDaHVua1NpemUgLSBzaXplLCBpbiBieXRlcywgb2YgY2h1bmtzIG9mIGRhdGEgc2VudCB0byBXZWIgSW5zcGVjdG9yIChyZWFsIGRldmljZSBvbmx5KVxuICAgKiAgIC0gd2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGggLSBUaGUgbWF4aW11bSBzaXplIGluIGJ5dGVzIG9mIGEgc2luZ2xlIGRhdGEgZnJhbWVcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGRldmljZSBjb21tdW5pY2F0aW9uIHByb3RvY29sXG4gICAqL1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGxvZy5pbmZvKGBSZW1vdGUgRGVidWdnZXIgdmVyc2lvbiAke3JlcXVpcmUocGF0aC5yZXNvbHZlKGdldE1vZHVsZVJvb3QoKSwgJ3BhY2thZ2UuanNvbicpKS52ZXJzaW9ufWApO1xuXG4gICAgY29uc3Qge1xuICAgICAgYnVuZGxlSWQsXG4gICAgICBhZGRpdGlvbmFsQnVuZGxlSWRzID0gW10sXG4gICAgICBwbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaSA9IHRydWUsXG4gICAgICBpbmNsdWRlU2FmYXJpID0gZmFsc2UsXG4gICAgICB1c2VOZXdTYWZhcmkgPSBmYWxzZSxcbiAgICAgIHBhZ2VMb2FkTXMsXG4gICAgICBob3N0LFxuICAgICAgcG9ydCA9IFJFTU9URV9ERUJVR0dFUl9QT1JULFxuICAgICAgc29ja2V0UGF0aCxcbiAgICAgIHBhZ2VSZWFkeVRpbWVvdXQgPSBQQUdFX1JFQURZX1RJTUVPVVQsXG4gICAgICByZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUgPSBmYWxzZSxcbiAgICAgIGxvZ0Z1bGxSZXNwb25zZSA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbiA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBmYWxzZSxcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgZnVsbFBhZ2VJbml0aWFsaXphdGlvbixcbiAgICB9ID0gb3B0cztcblxuICAgIHRoaXMuYnVuZGxlSWQgPSBidW5kbGVJZDtcbiAgICB0aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHMgPSBhZGRpdGlvbmFsQnVuZGxlSWRzO1xuICAgIHRoaXMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuICAgIHRoaXMuaXNTYWZhcmkgPSBpc1NhZmFyaTtcbiAgICB0aGlzLmluY2x1ZGVTYWZhcmkgPSBpbmNsdWRlU2FmYXJpO1xuICAgIHRoaXMudXNlTmV3U2FmYXJpID0gdXNlTmV3U2FmYXJpO1xuICAgIHRoaXMucGFnZUxvYWRNcyA9IHBhZ2VMb2FkTXM7XG4gICAgbG9nLmRlYnVnKGB1c2VOZXdTYWZhcmkgLS0+ICR7dGhpcy51c2VOZXdTYWZhcml9YCk7XG5cbiAgICB0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlID0gZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGU7XG5cbiAgICB0aGlzLmhvc3QgPSBob3N0O1xuICAgIHRoaXMucG9ydCA9IHBvcnQ7XG4gICAgdGhpcy5zb2NrZXRQYXRoID0gc29ja2V0UGF0aDtcbiAgICB0aGlzLnJlbW90ZURlYnVnUHJveHkgPSByZW1vdGVEZWJ1Z1Byb3h5O1xuICAgIHRoaXMucGFnZVJlYWR5VGltZW91dCA9IHBhZ2VSZWFkeVRpbWVvdXQ7XG5cbiAgICB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24gPSBfLmlzTmlsKGxvZ0FsbENvbW11bmljYXRpb24pID8gISFsb2dGdWxsUmVzcG9uc2UgOiAhIWxvZ0FsbENvbW11bmljYXRpb247XG4gICAgdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wO1xuICAgIHRoaXMuc29ja2V0Q2h1bmtTaXplID0gc29ja2V0Q2h1bmtTaXplO1xuXG4gICAgaWYgKF8uaXNJbnRlZ2VyKHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoKSkge1xuICAgICAgdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCA9IHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZ1bGxQYWdlSW5pdGlhbGl6YXRpb247XG5cbiAgICB0aGlzLl9sb2NrID0gbmV3IEFzeW5jTG9jaygpO1xuICB9XG5cbiAgc2V0dXAgKCkge1xuICAgIC8vIGFwcCBoYW5kbGluZyBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9uYXZpZ2F0aW5nVG9QYWdlID0gZmFsc2U7XG4gICAgdGhpcy5hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkID0gZmFsc2U7XG5cbiAgICB0aGlzLnJwY0NsaWVudCA9IG51bGw7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnMgPSB7fTtcbiAgfVxuXG4gIHRlYXJkb3duICgpIHtcbiAgICBsb2cuZGVidWcoJ0NsZWFuaW5nIHVwIGxpc3RlbmVycycpO1xuXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMucnBjQ2xpZW50ID0gbnVsbDtcblxuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFJlbW90ZURlYnVnZ2VyLkVWRU5UX1BBR0VfQ0hBTkdFKTtcbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhSZW1vdGVEZWJ1Z2dlci5FVkVOVF9ESVNDT05ORUNUKTtcbiAgfVxuXG4gIGluaXRScGNDbGllbnQgKCkge1xuICAgIHRoaXMucnBjQ2xpZW50ID0gbmV3IFJwY0NsaWVudFNpbXVsYXRvcih7XG4gICAgICBidW5kbGVJZDogdGhpcy5idW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSxcbiAgICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIHNvY2tldFBhdGg6IHRoaXMuc29ja2V0UGF0aCxcbiAgICAgIG1lc3NhZ2VQcm94eTogdGhpcy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbjogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAsXG4gICAgICBmdWxsUGFnZUluaXRpYWxpemF0aW9uOiB0aGlzLmZ1bGxQYWdlSW5pdGlhbGl6YXRpb24sXG4gICAgICB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDogdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpc0Nvbm5lY3RlZCAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5ycGNDbGllbnQ/LmlzQ29ubmVjdGVkO1xuICB9XG5cbiAgYXN5bmMgbGF1bmNoU2FmYXJpICgpIHtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdsYXVuY2hBcHBsaWNhdGlvbicsIHtcbiAgICAgIGJ1bmRsZUlkOiBTQUZBUklfQlVORExFX0lEXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdGFydFRpbWVsaW5lIChmbikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gcmVjb3JkIHRoZSB0aW1lbGluZScpO1xuICAgIHRoaXMucnBjQ2xpZW50Lm9uKCdUaW1lbGluZS5ldmVudFJlY29yZGVkJywgZm4pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdUaW1lbGluZS5zdGFydCcsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHN0b3BUaW1lbGluZSAoKSB7XG4gICAgbG9nLmRlYnVnKCdTdG9wcGluZyB0byByZWNvcmQgdGhlIHRpbWVsaW5lJyk7XG4gICAgYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnVGltZWxpbmUuc3RvcCcsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qXG4gICAqIEtlZXAgdHJhY2sgb2YgdGhlIGNsaWVudCBldmVudCBsaXN0ZW5lcnMgc28gdGhleSBjYW4gYmUgcmVtb3ZlZFxuICAgKi9cbiAgYWRkQ2xpZW50RXZlbnRMaXN0ZW5lciAoZXZlbnROYW1lLCBsaXN0ZW5lcikge1xuICAgIHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gPSB0aGlzLl9jbGllbnRFdmVudExpc3RlbmVyc1tldmVudE5hbWVdIHx8IFtdO1xuICAgIHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0ucHVzaChsaXN0ZW5lcik7XG4gICAgdGhpcy5ycGNDbGllbnQub24oZXZlbnROYW1lLCBsaXN0ZW5lcik7XG4gIH1cblxuICByZW1vdmVDbGllbnRFdmVudExpc3RlbmVyIChldmVudE5hbWUpIHtcbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mICh0aGlzLl9jbGllbnRFdmVudExpc3RlbmVyc1tldmVudE5hbWVdIHx8IFtdKSkge1xuICAgICAgdGhpcy5ycGNDbGllbnQub2ZmKGV2ZW50TmFtZSwgbGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXJ0Q29uc29sZSAobGlzdGVuZXIpIHtcbiAgICBsb2cuZGVidWcoJ1N0YXJ0aW5nIHRvIGxpc3RlbiBmb3IgSmF2YVNjcmlwdCBjb25zb2xlJyk7XG4gICAgdGhpcy5hZGRDbGllbnRFdmVudExpc3RlbmVyKCdDb25zb2xlLm1lc3NhZ2VBZGRlZCcsIGxpc3RlbmVyKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCcsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHN0b3BDb25zb2xlICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIGxpc3RlbiBmb3IgSmF2YVNjcmlwdCBjb25zb2xlJyk7XG4gICAgdGhpcy5yZW1vdmVDbGllbnRFdmVudExpc3RlbmVyKCdDb25zb2xlLm1lc3NhZ2VBZGRlZCcpO1xuICAgIHRoaXMucmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkJyk7XG4gIH1cblxuICBzdGFydE5ldHdvcmsgKGxpc3RlbmVyKSB7XG4gICAgbG9nLmRlYnVnKCdTdGFydGluZyB0byBsaXN0ZW4gZm9yIG5ldHdvcmsgZXZlbnRzJyk7XG4gICAgdGhpcy5hZGRDbGllbnRFdmVudExpc3RlbmVyKCdOZXR3b3JrRXZlbnQnLCBsaXN0ZW5lcik7XG4gIH1cblxuICBzdG9wTmV0d29yayAoKSB7XG4gICAgbG9nLmRlYnVnKCdTdG9wcGluZyB0byBsaXN0ZW4gZm9yIG5ldHdvcmsgZXZlbnRzJyk7XG4gICAgdGhpcy5yZW1vdmVDbGllbnRFdmVudExpc3RlbmVyKCdOZXR3b3JrRXZlbnQnKTtcbiAgfVxuXG4gIHNldCBhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIChhbGxvdykge1xuICAgIHRoaXMuX2FsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgPSBhbGxvdztcbiAgfVxuXG4gIGdldCBhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkICgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZDtcbiAgfVxuXG4gIC8vIFBvdGVudGlhbGx5IHRoaXMgZG9lcyBub3Qgd29yayBmb3IgbW9iaWxlIHNhZmFyaVxuICBhc3luYyBvdmVycmlkZVVzZXJBZ2VudCAodmFsdWUpIHtcbiAgICBsb2cuZGVidWcoJ1NldHRpbmcgb3ZlcnJpZGVVc2VyQWdlbnQnKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUGFnZS5vdmVycmlkZVVzZXJBZ2VudCcsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIHZhbHVlXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRDb29raWVzICgpIHtcbiAgICBsb2cuZGVidWcoJ0dldHRpbmcgY29va2llcycpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdQYWdlLmdldENvb2tpZXMnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXlcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNldENvb2tpZSAoY29va2llKSB7XG4gICAgbG9nLmRlYnVnKCdTZXR0aW5nIGNvb2tpZScpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdQYWdlLnNldENvb2tpZScsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIGNvb2tpZVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQ29va2llIChjb29raWVOYW1lLCB1cmwpIHtcbiAgICBsb2cuZGVidWcoYERlbGV0aW5nIGNvb2tpZSAnJHtjb29raWVOYW1lfScgb24gJyR7dXJsfSdgKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUGFnZS5kZWxldGVDb29raWUnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgICBjb29raWVOYW1lLFxuICAgICAgdXJsLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2FyYmFnZUNvbGxlY3QgKHRpbWVvdXRNcyA9IEdBUkJBR0VfQ09MTEVDVF9USU1FT1VUKSB7XG4gICAgbG9nLmRlYnVnKGBHYXJiYWdlIGNvbGxlY3Rpbmcgd2l0aCAke3RpbWVvdXRNc31tcyB0aW1lb3V0YCk7XG4gICAgdHJ5IHtcbiAgICAgIGNoZWNrUGFyYW1zKHthcHBJZEtleTogdGhpcy5hcHBJZEtleSwgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleX0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmRlYnVnKGBVbmFibGUgdG8gY29sbGVjdCBnYXJiYWdlIGF0IHRoaXMgdGltZWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IEIucmVzb2x2ZSh0aGlzLnJwY0NsaWVudC5zZW5kKCdIZWFwLmdjJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pKS50aW1lb3V0KHRpbWVvdXRNcylcbiAgICAudGhlbihmdW5jdGlvbiBnY1N1Y2Nlc3MgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLXRoZW5cbiAgICAgIGxvZy5kZWJ1ZyhgR2FyYmFnZSBjb2xsZWN0aW9uIHN1Y2Nlc3NmdWxgKTtcbiAgICB9KS5jYXRjaChmdW5jdGlvbiBnY0Vycm9yIChlcnIpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBCLlRpbWVvdXRFcnJvcikge1xuICAgICAgICBsb2cuZGVidWcoYEdhcmJhZ2UgY29sbGVjdGlvbiB0aW1lZCBvdXQgYWZ0ZXIgJHt0aW1lb3V0TXN9bXNgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgVW5hYmxlIHRvIGNvbGxlY3QgZ2FyYmFnZTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVzZUFwcERpY3RMb2NrIChmbikge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9sb2NrLmFjcXVpcmUoJ2FwcERpY3QnLCBmbik7XG4gIH1cblxuICBnZXQgc2tpcHBlZEFwcHMgKCkge1xuICAgIHJldHVybiB0aGlzLl9za2lwcGVkQXBwcyB8fCBbXTtcbiAgfVxufVxuXG5mb3IgKGNvbnN0IFtuYW1lLCBmbl0gb2YgXy50b1BhaXJzKG1peGlucykpIHtcbiAgUmVtb3RlRGVidWdnZXIucHJvdG90eXBlW25hbWVdID0gZm47XG59XG5cbmZvciAoY29uc3QgW25hbWUsIGV2ZW50XSBvZiBfLnRvUGFpcnMoZXZlbnRzKSkge1xuICBSZW1vdGVEZWJ1Z2dlcltuYW1lXSA9IGV2ZW50O1xufVxuXG5leHBvcnQgZGVmYXVsdCBSZW1vdGVEZWJ1Z2dlcjtcbmV4cG9ydCB7XG4gIFJlbW90ZURlYnVnZ2VyLCBSRU1PVEVfREVCVUdHRVJfUE9SVCwgUlBDX1JFU1BPTlNFX1RJTUVPVVRfTVMsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLElBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE9BQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLE1BQU1VLG9CQUFvQixHQUFHLEtBQUs7QUFBQ0MsT0FBQSxDQUFBRCxvQkFBQSxHQUFBQSxvQkFBQTtBQUNuQyxNQUFNRSxnQkFBZ0IsR0FBRyx3QkFBd0I7QUFHakQsTUFBTUMsdUJBQXVCLEdBQUcsSUFBSTtBQUFDRixPQUFBLENBQUFFLHVCQUFBLEdBQUFBLHVCQUFBO0FBRXJDLE1BQU1DLGtCQUFrQixHQUFHLElBQUk7QUFFL0IsTUFBTUMsdUJBQXVCLEdBQUcsSUFBSTtBQUdwQyxNQUFNQyxjQUFjLFNBQVNDLG9CQUFZLENBQUM7RUFpQnhDQyxXQUFXQSxDQUFFQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDdEIsS0FBSyxDQUFDLENBQUM7SUFFUEMsZUFBRyxDQUFDQyxJQUFJLENBQUUsMkJBQTBCckIsT0FBTyxDQUFDc0IsYUFBSSxDQUFDQyxPQUFPLENBQUMsSUFBQUMsb0JBQWEsRUFBQyxDQUFDLEVB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
|
|
267
|
+
exports.default = RemoteDebugger;
|
|
268
|
+
//# sourceMappingURL=remote-debugger.js.map
|