appium-remote-debugger 9.1.3 → 9.1.4

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.
Files changed (39) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/build/index.js +1 -6
  3. package/build/lib/atoms.js +1 -22
  4. package/build/lib/atoms.js.map +1 -0
  5. package/build/lib/logger.js +1 -5
  6. package/build/lib/logger.js.map +1 -0
  7. package/build/lib/mixins/connect.js +5 -69
  8. package/build/lib/mixins/connect.js.map +1 -0
  9. package/build/lib/mixins/events.js +1 -3
  10. package/build/lib/mixins/events.js.map +1 -0
  11. package/build/lib/mixins/execute.js +3 -34
  12. package/build/lib/mixins/execute.js.map +1 -0
  13. package/build/lib/mixins/index.js +1 -9
  14. package/build/lib/mixins/index.js.map +1 -0
  15. package/build/lib/mixins/message-handlers.js +1 -33
  16. package/build/lib/mixins/message-handlers.js.map +1 -0
  17. package/build/lib/mixins/navigate.js +4 -52
  18. package/build/lib/mixins/navigate.js.map +1 -0
  19. package/build/lib/protocol/index.js +20 -7
  20. package/build/lib/protocol/index.js.map +1 -0
  21. package/build/lib/remote-debugger-real-device.js +1 -9
  22. package/build/lib/remote-debugger-real-device.js.map +1 -0
  23. package/build/lib/remote-debugger.js +2 -61
  24. package/build/lib/remote-debugger.js.map +1 -0
  25. package/build/lib/rpc/index.js +1 -5
  26. package/build/lib/rpc/index.js.map +1 -0
  27. package/build/lib/rpc/remote-messages.js +5 -28
  28. package/build/lib/rpc/remote-messages.js.map +1 -0
  29. package/build/lib/rpc/rpc-client-real-device.js +1 -16
  30. package/build/lib/rpc/rpc-client-real-device.js.map +1 -0
  31. package/build/lib/rpc/rpc-client-simulator.js +4 -30
  32. package/build/lib/rpc/rpc-client-simulator.js.map +1 -0
  33. package/build/lib/rpc/rpc-client.js +13 -109
  34. package/build/lib/rpc/rpc-client.js.map +1 -0
  35. package/build/lib/rpc/rpc-message-handler.js +1 -52
  36. package/build/lib/rpc/rpc-message-handler.js.map +1 -0
  37. package/build/lib/utils.js +9 -44
  38. package/build/lib/utils.js.map +1 -0
  39. package/package.json +4 -3
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  const events = {
11
9
  EVENT_PAGE_CHANGE: 'remote_debugger_page_change',
12
10
  EVENT_FRAMES_DETACHED: 'remote_debugger_frames_detached',
@@ -14,4 +12,4 @@ const events = {
14
12
  };
15
13
  var _default = events;
16
14
  exports.default = _default;
17
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJldmVudHMiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIkVWRU5UX0ZSQU1FU19ERVRBQ0hFRCIsIkVWRU5UX0RJU0NPTk5FQ1QiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWl4aW5zL2V2ZW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBldmVudCBlbWl0dGVkIHB1YmxpY2FsbHlcbmNvbnN0IGV2ZW50cyA9IHtcbiAgRVZFTlRfUEFHRV9DSEFOR0U6ICdyZW1vdGVfZGVidWdnZXJfcGFnZV9jaGFuZ2UnLFxuICBFVkVOVF9GUkFNRVNfREVUQUNIRUQ6ICdyZW1vdGVfZGVidWdnZXJfZnJhbWVzX2RldGFjaGVkJyxcbiAgRVZFTlRfRElTQ09OTkVDVDogJ3JlbW90ZV9kZWJ1Z2dlcl9kaXNjb25uZWN0Jyxcbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgZXZlbnRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxNQUFNQSxNQUFNLEdBQUc7RUFDYkMsaUJBQWlCLEVBQUUsNkJBRE47RUFFYkMscUJBQXFCLEVBQUUsaUNBRlY7RUFHYkMsZ0JBQWdCLEVBQUU7QUFITCxDQUFmO2VBT2VILE0ifQ==
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJldmVudHMiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIkVWRU5UX0ZSQU1FU19ERVRBQ0hFRCIsIkVWRU5UX0RJU0NPTk5FQ1QiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWl4aW5zL2V2ZW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBldmVudCBlbWl0dGVkIHB1YmxpY2FsbHlcbmNvbnN0IGV2ZW50cyA9IHtcbiAgRVZFTlRfUEFHRV9DSEFOR0U6ICdyZW1vdGVfZGVidWdnZXJfcGFnZV9jaGFuZ2UnLFxuICBFVkVOVF9GUkFNRVNfREVUQUNIRUQ6ICdyZW1vdGVfZGVidWdnZXJfZnJhbWVzX2RldGFjaGVkJyxcbiAgRVZFTlRfRElTQ09OTkVDVDogJ3JlbW90ZV9kZWJ1Z2dlcl9kaXNjb25uZWN0Jyxcbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgZXZlbnRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsTUFBTUEsTUFBTSxHQUFHO0VBQ2JDLGlCQUFpQixFQUFFLDZCQUE2QjtFQUNoREMscUJBQXFCLEVBQUUsaUNBQWlDO0VBQ3hEQyxnQkFBZ0IsRUFBRTtBQUNwQixDQUFDO0FBQUMsZUFHYUgsTUFBTTtBQUFBIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","names":["events","EVENT_PAGE_CHANGE","EVENT_FRAMES_DETACHED","EVENT_DISCONNECT"],"sources":["../../../lib/mixins/events.js"],"sourcesContent":["// event emitted publically\nconst events = {\n EVENT_PAGE_CHANGE: 'remote_debugger_page_change',\n EVENT_FRAMES_DETACHED: 'remote_debugger_frames_detached',\n EVENT_DISCONNECT: 'remote_debugger_disconnect',\n};\n\n\nexport default events;\n"],"mappings":";;;;;;;AACA,MAAMA,MAAM,GAAG;EACbC,iBAAiB,EAAE,6BAA6B;EAChDC,qBAAqB,EAAE,iCAAiC;EACxDC,gBAAgB,EAAE;AACpB,CAAC;AAAC,eAGaH,MAAM;AAAA"}
@@ -1,47 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  require("source-map-support/register");
11
-
12
9
  var _logger = _interopRequireDefault(require("../logger"));
13
-
14
10
  var _driver = require("appium/driver");
15
-
16
11
  var _utils = require("../utils");
17
-
18
12
  var _atoms = require("../atoms");
19
-
20
13
  var _support = require("appium/support");
21
-
22
14
  var _asyncbox = require("asyncbox");
23
-
24
15
  var _lodash = _interopRequireDefault(require("lodash"));
25
-
26
16
  const RPC_RESPONSE_TIMEOUT_MS = 5000;
27
17
 
28
18
  async function executeAtom(atom, args, frames) {
29
19
  if (!this.rpcClient.isConnected) {
30
20
  throw new Error('Remote debugger is not connected');
31
21
  }
32
-
33
22
  _logger.default.debug(`Executing atom '${atom}' with 'args=${JSON.stringify(args)}; frames=${frames}'`);
34
-
35
23
  const script = await (0, _atoms.getScriptForAtom)(atom, args, frames);
36
24
  const value = await this.execute(script, true);
37
-
38
25
  _logger.default.debug(`Received result for atom '${atom}' execution: ${_lodash.default.truncate((0, _utils.simpleStringify)(value), {
39
26
  length: _utils.RESPONSE_LOG_LENGTH
40
27
  })}`);
41
-
42
28
  return value;
43
29
  }
44
-
45
30
  async function executeAtomAsync(atom, args, frames) {
46
31
  const evaluate = async (method, opts) => await this.rpcClient.send(method, Object.assign({
47
32
  appIdKey: this.appIdKey,
@@ -62,14 +47,15 @@ async function executeAtomAsync(atom, args, frames) {
62
47
  expression: script
63
48
  });
64
49
  const promiseObjectId = obj.result.objectId;
50
+
65
51
  const asyncCallBack = `function (res) {
66
52
  window.${promiseName}.resolve(res);
67
53
  window.${promiseName}Value = res;
68
54
  }`;
69
55
  await this.execute(await (0, _atoms.getScriptForAtom)(atom, args, frames, asyncCallBack));
56
+
70
57
  let res;
71
58
  const subcommandTimeout = 1000;
72
-
73
59
  try {
74
60
  res = await evaluate('Runtime.awaitPromise', {
75
61
  promiseObjectId,
@@ -81,27 +67,22 @@ async function executeAtomAsync(atom, args, frames) {
81
67
  if (!err.message.includes(`'Runtime.awaitPromise' was not found`)) {
82
68
  throw err;
83
69
  }
84
-
85
70
  const retryWait = 100;
86
71
  const timeout = args.length >= 3 ? args[2] : RPC_RESPONSE_TIMEOUT_MS;
87
72
  const retries = parseInt(timeout / retryWait, 10) || 1;
88
73
  const timer = new _support.timing.Timer().start();
89
-
90
74
  _logger.default.debug(`Waiting up to ${timeout}ms for async execute to finish`);
91
-
92
75
  res = await (0, _asyncbox.retryInterval)(retries, retryWait, async () => {
93
76
  const hasValue = await evaluate('Runtime.evaluate', {
94
77
  expression: `window.hasOwnProperty('${promiseName}Value');`,
95
78
  returnByValue: true
96
79
  });
97
-
98
80
  if (hasValue) {
99
81
  return await evaluate('Runtime.evaluate', {
100
82
  expression: `window.${promiseName}Value;`,
101
83
  returnByValue: true
102
84
  });
103
85
  }
104
-
105
86
  throw new _driver.errors.TimeoutError(`Timed out waiting for asynchronous script ` + `result after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms'));`);
106
87
  });
107
88
  } finally {
@@ -109,30 +90,23 @@ async function executeAtomAsync(atom, args, frames) {
109
90
  await this.executeAtom('execute_script', [`delete window.${promiseName};`, [null, null], subcommandTimeout], frames);
110
91
  } catch (ign) {}
111
92
  }
112
-
113
93
  return (0, _utils.convertResult)(res);
114
94
  }
115
-
116
95
  async function execute(command, override) {
117
96
  if (this.pageLoading && !override) {
118
97
  _logger.default.debug('Trying to execute but page is not loaded.');
119
-
120
98
  await this.waitForDom();
121
99
  }
122
-
123
100
  (0, _utils.checkParams)({
124
101
  appIdKey: this.appIdKey,
125
102
  pageIdKey: this.pageIdKey
126
103
  });
127
-
128
104
  if (this.garbageCollectOnExecute) {
129
105
  await this.garbageCollect();
130
106
  }
131
-
132
107
  _logger.default.debug(`Sending javascript command: '${_lodash.default.truncate(command, {
133
108
  length: 50
134
109
  })}'`);
135
-
136
110
  const res = await this.rpcClient.send('Runtime.evaluate', {
137
111
  expression: command,
138
112
  returnByValue: true,
@@ -141,19 +115,15 @@ async function execute(command, override) {
141
115
  });
142
116
  return (0, _utils.convertResult)(res);
143
117
  }
144
-
145
118
  async function callFunction(objectId, fn, args) {
146
119
  (0, _utils.checkParams)({
147
120
  appIdKey: this.appIdKey,
148
121
  pageIdKey: this.pageIdKey
149
122
  });
150
-
151
123
  if (this.garbageCollectOnExecute) {
152
124
  await this.garbageCollect();
153
125
  }
154
-
155
126
  _logger.default.debug('Calling javascript function');
156
-
157
127
  const res = await this.rpcClient.send('Runtime.callFunctionOn', {
158
128
  objectId,
159
129
  functionDeclaration: fn,
@@ -164,7 +134,6 @@ async function callFunction(objectId, fn, args) {
164
134
  });
165
135
  return (0, _utils.convertResult)(res);
166
136
  }
167
-
168
137
  var _default = {
169
138
  executeAtom,
170
139
  executeAtomAsync,
@@ -172,4 +141,4 @@ var _default = {
172
141
  callFunction
173
142
  };
174
143
  exports.default = _default;
175
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSUENfUkVTUE9OU0VfVElNRU9VVF9NUyIsImV4ZWN1dGVBdG9tIiwiYXRvbSIsImFyZ3MiLCJmcmFtZXMiLCJycGNDbGllbnQiLCJpc0Nvbm5lY3RlZCIsIkVycm9yIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5Iiwic2NyaXB0IiwiZ2V0U2NyaXB0Rm9yQXRvbSIsInZhbHVlIiwiZXhlY3V0ZSIsIl8iLCJ0cnVuY2F0ZSIsInNpbXBsZVN0cmluZ2lmeSIsImxlbmd0aCIsIlJFU1BPTlNFX0xPR19MRU5HVEgiLCJleGVjdXRlQXRvbUFzeW5jIiwiZXZhbHVhdGUiLCJtZXRob2QiLCJvcHRzIiwic2VuZCIsIk9iamVjdCIsImFzc2lnbiIsImFwcElkS2V5IiwicGFnZUlkS2V5IiwicmV0dXJuQnlWYWx1ZSIsInByb21pc2VOYW1lIiwidXRpbCIsInV1aWRWNCIsInJlcGxhY2UiLCJvYmoiLCJleHByZXNzaW9uIiwicHJvbWlzZU9iamVjdElkIiwicmVzdWx0Iiwib2JqZWN0SWQiLCJhc3luY0NhbGxCYWNrIiwicmVzIiwic3ViY29tbWFuZFRpbWVvdXQiLCJnZW5lcmF0ZVByZXZpZXciLCJzYXZlUmVzdWx0IiwiZXJyIiwibWVzc2FnZSIsImluY2x1ZGVzIiwicmV0cnlXYWl0IiwidGltZW91dCIsInJldHJpZXMiLCJwYXJzZUludCIsInRpbWVyIiwidGltaW5nIiwiVGltZXIiLCJzdGFydCIsInJldHJ5SW50ZXJ2YWwiLCJoYXNWYWx1ZSIsImVycm9ycyIsIlRpbWVvdXRFcnJvciIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJ0b0ZpeGVkIiwiaWduIiwiY29udmVydFJlc3VsdCIsImNvbW1hbmQiLCJvdmVycmlkZSIsInBhZ2VMb2FkaW5nIiwid2FpdEZvckRvbSIsImNoZWNrUGFyYW1zIiwiZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUiLCJnYXJiYWdlQ29sbGVjdCIsImNhbGxGdW5jdGlvbiIsImZuIiwiZnVuY3Rpb25EZWNsYXJhdGlvbiIsImFyZ3VtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9taXhpbnMvZXhlY3V0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7IGNoZWNrUGFyYW1zLCBzaW1wbGVTdHJpbmdpZnksIGNvbnZlcnRSZXN1bHQsIFJFU1BPTlNFX0xPR19MRU5HVEggfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBnZXRTY3JpcHRGb3JBdG9tIH0gZnJvbSAnLi4vYXRvbXMnO1xuaW1wb3J0IHsgdXRpbCwgdGltaW5nIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cblxuLyogSG93IG1hbnkgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHdlYmtpdCB0byByZXR1cm4gYSByZXNwb25zZSBiZWZvcmUgdGltaW5nIG91dCAqL1xuY29uc3QgUlBDX1JFU1BPTlNFX1RJTUVPVVRfTVMgPSA1MDAwO1xuXG4vKipcbiAqIEV4ZWN1dGUgYSBTZWxlbml1bSBhdG9tIGluIFNhZmFyaVxuICogQHBhcmFtIHtzdHJpbmd9IGF0b20gTmFtZSBvZiBTZWxlbml1bSBhdG9tIChzZWUgYXRvbXMvIGRpcmVjdG9yeSlcbiAqIEBwYXJhbSB7QXJyYXk8Kj59IGFyZ3MgQXJndW1lbnRzIHBhc3NlZCB0byB0aGUgYXRvbVxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBmcmFtZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSByZXN1bHQgcmVjZWl2ZWQgZnJvbSB0aGUgYXRvbVxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQXRvbSAoYXRvbSwgYXJncywgZnJhbWVzKSB7XG4gIGlmICghdGhpcy5ycGNDbGllbnQuaXNDb25uZWN0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbW90ZSBkZWJ1Z2dlciBpcyBub3QgY29ubmVjdGVkJyk7XG4gIH1cblxuICBsb2cuZGVidWcoYEV4ZWN1dGluZyBhdG9tICcke2F0b219JyB3aXRoICdhcmdzPSR7SlNPTi5zdHJpbmdpZnkoYXJncyl9OyBmcmFtZXM9JHtmcmFtZXN9J2ApO1xuICBjb25zdCBzY3JpcHQgPSBhd2FpdCBnZXRTY3JpcHRGb3JBdG9tKGF0b20sIGFyZ3MsIGZyYW1lcyk7XG4gIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5leGVjdXRlKHNjcmlwdCwgdHJ1ZSk7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgcmVzdWx0IGZvciBhdG9tICcke2F0b219JyBleGVjdXRpb246ICR7Xy50cnVuY2F0ZShzaW1wbGVTdHJpbmdpZnkodmFsdWUpLCB7bGVuZ3RoOiBSRVNQT05TRV9MT0dfTEVOR1RIfSl9YCk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUF0b21Bc3luYyAoYXRvbSwgYXJncywgZnJhbWVzKSB7XG4gIC8vIGhlbHBlciB0byBzZW5kIGRpcmVjdGx5IHRvIHRoZSB3ZWIgaW5zcGVjdG9yXG4gIGNvbnN0IGV2YWx1YXRlID0gYXN5bmMgKG1ldGhvZCwgb3B0cykgPT4gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZChtZXRob2QsIE9iamVjdC5hc3NpZ24oe1xuICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgcmV0dXJuQnlWYWx1ZTogZmFsc2UsXG4gIH0sIG9wdHMpKTtcblxuICAvLyBmaXJzdCBjcmVhdGUgYSBQcm9taXNlIG9uIHRoZSBwYWdlLCBzYXZpbmcgdGhlIHJlc29sdmUvcmVqZWN0IGZ1bmN0aW9uc1xuICAvLyBhcyBwcm9wZXJ0aWVzXG4gIGNvbnN0IHByb21pc2VOYW1lID0gYGFwcGl1bUFzeW5jRXhlY3V0ZVByb21pc2Uke3V0aWwudXVpZFY0KCkucmVwbGFjZSgvLS9nLCAnJyl9YDtcbiAgY29uc3Qgc2NyaXB0ID1cbiAgICBgdmFyIHJlcywgcmVqO1xuICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHJlcyA9IHJlc29sdmU7XG4gICAgICByZWogPSByZWplY3Q7XG4gICAgfSk7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9LnJlc29sdmUgPSByZXM7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9LnJlamVjdCA9IHJlajtcbiAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX07YDtcbiAgY29uc3Qgb2JqID0gYXdhaXQgZXZhbHVhdGUoJ1J1bnRpbWUuZXZhbHVhdGUnLCB7XG4gICAgZXhwcmVzc2lvbjogc2NyaXB0LFxuICB9KTtcbiAgY29uc3QgcHJvbWlzZU9iamVjdElkID0gb2JqLnJlc3VsdC5vYmplY3RJZDtcblxuICAvLyBleGVjdXRlIHRoZSBhdG9tLCBjYWxsaW5nIGJhY2sgdG8gdGhlIHJlc29sdmUgZnVuY3Rpb25cbiAgY29uc3QgYXN5bmNDYWxsQmFjayA9XG4gICAgYGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfS5yZXNvbHZlKHJlcyk7XG4gICAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX1WYWx1ZSA9IHJlcztcbiAgICB9YDtcbiAgYXdhaXQgdGhpcy5leGVjdXRlKGF3YWl0IGdldFNjcmlwdEZvckF0b20oYXRvbSwgYXJncywgZnJhbWVzLCBhc3luY0NhbGxCYWNrKSk7XG5cbiAgLy8gd2FpdCBmb3IgdGhlIHByb21pc2UgdG8gYmUgcmVzb2x2ZWRcbiAgbGV0IHJlcztcbiAgY29uc3Qgc3ViY29tbWFuZFRpbWVvdXQgPSAxMDAwOyAvLyB0aW1lb3V0IG9uIGluZGl2aWR1YWwgY29tbWFuZHNcbiAgdHJ5IHtcbiAgICByZXMgPSBhd2FpdCBldmFsdWF0ZSgnUnVudGltZS5hd2FpdFByb21pc2UnLCB7XG4gICAgICBwcm9taXNlT2JqZWN0SWQsXG4gICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgICAgZ2VuZXJhdGVQcmV2aWV3OiB0cnVlLFxuICAgICAgc2F2ZVJlc3VsdDogdHJ1ZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKCFlcnIubWVzc2FnZS5pbmNsdWRlcyhgJ1J1bnRpbWUuYXdhaXRQcm9taXNlJyB3YXMgbm90IGZvdW5kYCkpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgLy8gYXdhaXRQcm9taXNlIGlzIG5vdCBhbHdheXMgYXZhaWxhYmxlLCBzbyBzaW11bGF0ZSBpdCB3aXRoIHBvbGxcbiAgICBjb25zdCByZXRyeVdhaXQgPSAxMDA7XG4gICAgY29uc3QgdGltZW91dCA9IChhcmdzLmxlbmd0aCA+PSAzKSA/IGFyZ3NbMl0gOiBSUENfUkVTUE9OU0VfVElNRU9VVF9NUztcbiAgICAvLyBpZiB0aGUgdGltZW91dCBtYXRoIHR1cm5zIHVwIDAgcmV0cmllcywgbWFrZSBzdXJlIGl0IGhhcHBlbnMgb25jZVxuICAgIGNvbnN0IHJldHJpZXMgPSBwYXJzZUludCh0aW1lb3V0IC8gcmV0cnlXYWl0LCAxMCkgfHwgMTtcbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGxvZy5kZWJ1ZyhgV2FpdGluZyB1cCB0byAke3RpbWVvdXR9bXMgZm9yIGFzeW5jIGV4ZWN1dGUgdG8gZmluaXNoYCk7XG4gICAgcmVzID0gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCByZXRyeVdhaXQsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIHRoZSBhdG9tIF93aWxsXyByZXR1cm4sIGVpdGhlciBiZWNhdXNlIGl0IGZpbmlzaGVkIG9yIGFuIGVycm9yXG4gICAgICAvLyBpbmNsdWRpbmcgYSB0aW1lb3V0IGVycm9yXG4gICAgICBjb25zdCBoYXNWYWx1ZSA9IGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgICAgICBleHByZXNzaW9uOiBgd2luZG93Lmhhc093blByb3BlcnR5KCcke3Byb21pc2VOYW1lfVZhbHVlJyk7YCxcbiAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgaWYgKGhhc1ZhbHVlKSB7XG4gICAgICAgIC8vIHdlIG9ubHkgcHV0IHRoZSBwcm9wZXJ0eSBvbiBgd2luZG93YCB3aGVuIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQsXG4gICAgICAgIC8vIHNvIGlmIGl0IGlzIHRoZXJlLCBldmVyeXRoaW5nIGlzIGRvbmVcbiAgICAgICAgcmV0dXJuIGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgICAgICAgIGV4cHJlc3Npb246IGB3aW5kb3cuJHtwcm9taXNlTmFtZX1WYWx1ZTtgLFxuICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gdGhyb3cgYSBUaW1lb3V0RXJyb3IsIG9yIGVsc2UgaXQgbmVlZHMgdG8gYmUgY2F1Z2h0IGFuZCByZS10aHJvd25cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuVGltZW91dEVycm9yKGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgYXN5bmNocm9ub3VzIHNjcmlwdCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGByZXN1bHQgYWZ0ZXIgJHt0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXMnKSk7YCk7XG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIHRyeSB0byBnZXQgcmlkIG9mIHRoZSBwcm9taXNlXG4gICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtgZGVsZXRlIHdpbmRvdy4ke3Byb21pc2VOYW1lfTtgLCBbbnVsbCwgbnVsbF0sIHN1YmNvbW1hbmRUaW1lb3V0XSwgZnJhbWVzKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbiAgcmV0dXJuIGNvbnZlcnRSZXN1bHQocmVzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoY29tbWFuZCwgb3ZlcnJpZGUpIHtcbiAgLy8gaWYgdGhlIHBhZ2UgaXMgbm90IGxvYWRlZCB5ZXQsIHdhaXQgZm9yIGl0XG4gIGlmICh0aGlzLnBhZ2VMb2FkaW5nICYmICFvdmVycmlkZSkge1xuICAgIGxvZy5kZWJ1ZygnVHJ5aW5nIHRvIGV4ZWN1dGUgYnV0IHBhZ2UgaXMgbm90IGxvYWRlZC4nKTtcbiAgICBhd2FpdCB0aGlzLndhaXRGb3JEb20oKTtcbiAgfVxuXG4gIGNoZWNrUGFyYW1zKHthcHBJZEtleTogdGhpcy5hcHBJZEtleSwgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleX0pO1xuXG4gIGlmICh0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlKSB7XG4gICAgYXdhaXQgdGhpcy5nYXJiYWdlQ29sbGVjdCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBTZW5kaW5nIGphdmFzY3JpcHQgY29tbWFuZDogJyR7Xy50cnVuY2F0ZShjb21tYW5kLCB7bGVuZ3RoOiA1MH0pfSdgKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUnVudGltZS5ldmFsdWF0ZScsIHtcbiAgICBleHByZXNzaW9uOiBjb21tYW5kLFxuICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnZlcnRSZXN1bHQocmVzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsbEZ1bmN0aW9uIChvYmplY3RJZCwgZm4sIGFyZ3MpIHtcbiAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG5cbiAgaWYgKHRoaXMuZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUpIHtcbiAgICBhd2FpdCB0aGlzLmdhcmJhZ2VDb2xsZWN0KCk7XG4gIH1cblxuICBsb2cuZGVidWcoJ0NhbGxpbmcgamF2YXNjcmlwdCBmdW5jdGlvbicpO1xuICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdSdW50aW1lLmNhbGxGdW5jdGlvbk9uJywge1xuICAgIG9iamVjdElkLFxuICAgIGZ1bmN0aW9uRGVjbGFyYXRpb246IGZuLFxuICAgIGFyZ3VtZW50czogYXJncyxcbiAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gIH0pO1xuXG4gIHJldHVybiBjb252ZXJ0UmVzdWx0KHJlcyk7XG59XG5cblxuZXhwb3J0IGRlZmF1bHQgeyBleGVjdXRlQXRvbSwgZXhlY3V0ZUF0b21Bc3luYywgZXhlY3V0ZSwgY2FsbEZ1bmN0aW9uIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUEsTUFBTUEsdUJBQXVCLEdBQUcsSUFBaEM7O0FBU0EsZUFBZUMsV0FBZixDQUE0QkMsSUFBNUIsRUFBa0NDLElBQWxDLEVBQXdDQyxNQUF4QyxFQUFnRDtFQUM5QyxJQUFJLENBQUMsS0FBS0MsU0FBTCxDQUFlQyxXQUFwQixFQUFpQztJQUMvQixNQUFNLElBQUlDLEtBQUosQ0FBVSxrQ0FBVixDQUFOO0VBQ0Q7O0VBRURDLGVBQUEsQ0FBSUMsS0FBSixDQUFXLG1CQUFrQlAsSUFBSyxnQkFBZVEsSUFBSSxDQUFDQyxTQUFMLENBQWVSLElBQWYsQ0FBcUIsWUFBV0MsTUFBTyxHQUF4Rjs7RUFDQSxNQUFNUSxNQUFNLEdBQUcsTUFBTSxJQUFBQyx1QkFBQSxFQUFpQlgsSUFBakIsRUFBdUJDLElBQXZCLEVBQTZCQyxNQUE3QixDQUFyQjtFQUNBLE1BQU1VLEtBQUssR0FBRyxNQUFNLEtBQUtDLE9BQUwsQ0FBYUgs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
144
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSUENfUkVTUE9OU0VfVElNRU9VVF9NUyIsImV4ZWN1dGVBdG9tIiwiYXRvbSIsImFyZ3MiLCJmcmFtZXMiLCJycGNDbGllbnQiLCJpc0Nvbm5lY3RlZCIsIkVycm9yIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5Iiwic2NyaXB0IiwiZ2V0U2NyaXB0Rm9yQXRvbSIsInZhbHVlIiwiZXhlY3V0ZSIsIl8iLCJ0cnVuY2F0ZSIsInNpbXBsZVN0cmluZ2lmeSIsImxlbmd0aCIsIlJFU1BPTlNFX0xPR19MRU5HVEgiLCJleGVjdXRlQXRvbUFzeW5jIiwiZXZhbHVhdGUiLCJtZXRob2QiLCJvcHRzIiwic2VuZCIsIk9iamVjdCIsImFzc2lnbiIsImFwcElkS2V5IiwicGFnZUlkS2V5IiwicmV0dXJuQnlWYWx1ZSIsInByb21pc2VOYW1lIiwidXRpbCIsInV1aWRWNCIsInJlcGxhY2UiLCJvYmoiLCJleHByZXNzaW9uIiwicHJvbWlzZU9iamVjdElkIiwicmVzdWx0Iiwib2JqZWN0SWQiLCJhc3luY0NhbGxCYWNrIiwicmVzIiwic3ViY29tbWFuZFRpbWVvdXQiLCJnZW5lcmF0ZVByZXZpZXciLCJzYXZlUmVzdWx0IiwiZXJyIiwibWVzc2FnZSIsImluY2x1ZGVzIiwicmV0cnlXYWl0IiwidGltZW91dCIsInJldHJpZXMiLCJwYXJzZUludCIsInRpbWVyIiwidGltaW5nIiwiVGltZXIiLCJzdGFydCIsInJldHJ5SW50ZXJ2YWwiLCJoYXNWYWx1ZSIsImVycm9ycyIsIlRpbWVvdXRFcnJvciIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJ0b0ZpeGVkIiwiaWduIiwiY29udmVydFJlc3VsdCIsImNvbW1hbmQiLCJvdmVycmlkZSIsInBhZ2VMb2FkaW5nIiwid2FpdEZvckRvbSIsImNoZWNrUGFyYW1zIiwiZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUiLCJnYXJiYWdlQ29sbGVjdCIsImNhbGxGdW5jdGlvbiIsImZuIiwiZnVuY3Rpb25EZWNsYXJhdGlvbiIsImFyZ3VtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9taXhpbnMvZXhlY3V0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7IGNoZWNrUGFyYW1zLCBzaW1wbGVTdHJpbmdpZnksIGNvbnZlcnRSZXN1bHQsIFJFU1BPTlNFX0xPR19MRU5HVEggfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBnZXRTY3JpcHRGb3JBdG9tIH0gZnJvbSAnLi4vYXRvbXMnO1xuaW1wb3J0IHsgdXRpbCwgdGltaW5nIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cblxuLyogSG93IG1hbnkgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHdlYmtpdCB0byByZXR1cm4gYSByZXNwb25zZSBiZWZvcmUgdGltaW5nIG91dCAqL1xuY29uc3QgUlBDX1JFU1BPTlNFX1RJTUVPVVRfTVMgPSA1MDAwO1xuXG4vKipcbiAqIEV4ZWN1dGUgYSBTZWxlbml1bSBhdG9tIGluIFNhZmFyaVxuICogQHBhcmFtIHtzdHJpbmd9IGF0b20gTmFtZSBvZiBTZWxlbml1bSBhdG9tIChzZWUgYXRvbXMvIGRpcmVjdG9yeSlcbiAqIEBwYXJhbSB7QXJyYXk8Kj59IGFyZ3MgQXJndW1lbnRzIHBhc3NlZCB0byB0aGUgYXRvbVxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBmcmFtZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSByZXN1bHQgcmVjZWl2ZWQgZnJvbSB0aGUgYXRvbVxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQXRvbSAoYXRvbSwgYXJncywgZnJhbWVzKSB7XG4gIGlmICghdGhpcy5ycGNDbGllbnQuaXNDb25uZWN0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbW90ZSBkZWJ1Z2dlciBpcyBub3QgY29ubmVjdGVkJyk7XG4gIH1cblxuICBsb2cuZGVidWcoYEV4ZWN1dGluZyBhdG9tICcke2F0b219JyB3aXRoICdhcmdzPSR7SlNPTi5zdHJpbmdpZnkoYXJncyl9OyBmcmFtZXM9JHtmcmFtZXN9J2ApO1xuICBjb25zdCBzY3JpcHQgPSBhd2FpdCBnZXRTY3JpcHRGb3JBdG9tKGF0b20sIGFyZ3MsIGZyYW1lcyk7XG4gIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5leGVjdXRlKHNjcmlwdCwgdHJ1ZSk7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgcmVzdWx0IGZvciBhdG9tICcke2F0b219JyBleGVjdXRpb246ICR7Xy50cnVuY2F0ZShzaW1wbGVTdHJpbmdpZnkodmFsdWUpLCB7bGVuZ3RoOiBSRVNQT05TRV9MT0dfTEVOR1RIfSl9YCk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUF0b21Bc3luYyAoYXRvbSwgYXJncywgZnJhbWVzKSB7XG4gIC8vIGhlbHBlciB0byBzZW5kIGRpcmVjdGx5IHRvIHRoZSB3ZWIgaW5zcGVjdG9yXG4gIGNvbnN0IGV2YWx1YXRlID0gYXN5bmMgKG1ldGhvZCwgb3B0cykgPT4gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZChtZXRob2QsIE9iamVjdC5hc3NpZ24oe1xuICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgcmV0dXJuQnlWYWx1ZTogZmFsc2UsXG4gIH0sIG9wdHMpKTtcblxuICAvLyBmaXJzdCBjcmVhdGUgYSBQcm9taXNlIG9uIHRoZSBwYWdlLCBzYXZpbmcgdGhlIHJlc29sdmUvcmVqZWN0IGZ1bmN0aW9uc1xuICAvLyBhcyBwcm9wZXJ0aWVzXG4gIGNvbnN0IHByb21pc2VOYW1lID0gYGFwcGl1bUFzeW5jRXhlY3V0ZVByb21pc2Uke3V0aWwudXVpZFY0KCkucmVwbGFjZSgvLS9nLCAnJyl9YDtcbiAgY29uc3Qgc2NyaXB0ID1cbiAgICBgdmFyIHJlcywgcmVqO1xuICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHJlcyA9IHJlc29sdmU7XG4gICAgICByZWogPSByZWplY3Q7XG4gICAgfSk7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9LnJlc29sdmUgPSByZXM7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9LnJlamVjdCA9IHJlajtcbiAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX07YDtcbiAgY29uc3Qgb2JqID0gYXdhaXQgZXZhbHVhdGUoJ1J1bnRpbWUuZXZhbHVhdGUnLCB7XG4gICAgZXhwcmVzc2lvbjogc2NyaXB0LFxuICB9KTtcbiAgY29uc3QgcHJvbWlzZU9iamVjdElkID0gb2JqLnJlc3VsdC5vYmplY3RJZDtcblxuICAvLyBleGVjdXRlIHRoZSBhdG9tLCBjYWxsaW5nIGJhY2sgdG8gdGhlIHJlc29sdmUgZnVuY3Rpb25cbiAgY29uc3QgYXN5bmNDYWxsQmFjayA9XG4gICAgYGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfS5yZXNvbHZlKHJlcyk7XG4gICAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX1WYWx1ZSA9IHJlcztcbiAgICB9YDtcbiAgYXdhaXQgdGhpcy5leGVjdXRlKGF3YWl0IGdldFNjcmlwdEZvckF0b20oYXRvbSwgYXJncywgZnJhbWVzLCBhc3luY0NhbGxCYWNrKSk7XG5cbiAgLy8gd2FpdCBmb3IgdGhlIHByb21pc2UgdG8gYmUgcmVzb2x2ZWRcbiAgbGV0IHJlcztcbiAgY29uc3Qgc3ViY29tbWFuZFRpbWVvdXQgPSAxMDAwOyAvLyB0aW1lb3V0IG9uIGluZGl2aWR1YWwgY29tbWFuZHNcbiAgdHJ5IHtcbiAgICByZXMgPSBhd2FpdCBldmFsdWF0ZSgnUnVudGltZS5hd2FpdFByb21pc2UnLCB7XG4gICAgICBwcm9taXNlT2JqZWN0SWQsXG4gICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgICAgZ2VuZXJhdGVQcmV2aWV3OiB0cnVlLFxuICAgICAgc2F2ZVJlc3VsdDogdHJ1ZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKCFlcnIubWVzc2FnZS5pbmNsdWRlcyhgJ1J1bnRpbWUuYXdhaXRQcm9taXNlJyB3YXMgbm90IGZvdW5kYCkpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgLy8gYXdhaXRQcm9taXNlIGlzIG5vdCBhbHdheXMgYXZhaWxhYmxlLCBzbyBzaW11bGF0ZSBpdCB3aXRoIHBvbGxcbiAgICBjb25zdCByZXRyeVdhaXQgPSAxMDA7XG4gICAgY29uc3QgdGltZW91dCA9IChhcmdzLmxlbmd0aCA+PSAzKSA/IGFyZ3NbMl0gOiBSUENfUkVTUE9OU0VfVElNRU9VVF9NUztcbiAgICAvLyBpZiB0aGUgdGltZW91dCBtYXRoIHR1cm5zIHVwIDAgcmV0cmllcywgbWFrZSBzdXJlIGl0IGhhcHBlbnMgb25jZVxuICAgIGNvbnN0IHJldHJpZXMgPSBwYXJzZUludCh0aW1lb3V0IC8gcmV0cnlXYWl0LCAxMCkgfHwgMTtcbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGxvZy5kZWJ1ZyhgV2FpdGluZyB1cCB0byAke3RpbWVvdXR9bXMgZm9yIGFzeW5jIGV4ZWN1dGUgdG8gZmluaXNoYCk7XG4gICAgcmVzID0gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCByZXRyeVdhaXQsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIHRoZSBhdG9tIF93aWxsXyByZXR1cm4sIGVpdGhlciBiZWNhdXNlIGl0IGZpbmlzaGVkIG9yIGFuIGVycm9yXG4gICAgICAvLyBpbmNsdWRpbmcgYSB0aW1lb3V0IGVycm9yXG4gICAgICBjb25zdCBoYXNWYWx1ZSA9IGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgICAgICBleHByZXNzaW9uOiBgd2luZG93Lmhhc093blByb3BlcnR5KCcke3Byb21pc2VOYW1lfVZhbHVlJyk7YCxcbiAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgaWYgKGhhc1ZhbHVlKSB7XG4gICAgICAgIC8vIHdlIG9ubHkgcHV0IHRoZSBwcm9wZXJ0eSBvbiBgd2luZG93YCB3aGVuIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQsXG4gICAgICAgIC8vIHNvIGlmIGl0IGlzIHRoZXJlLCBldmVyeXRoaW5nIGlzIGRvbmVcbiAgICAgICAgcmV0dXJuIGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgICAgICAgIGV4cHJlc3Npb246IGB3aW5kb3cuJHtwcm9taXNlTmFtZX1WYWx1ZTtgLFxuICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gdGhyb3cgYSBUaW1lb3V0RXJyb3IsIG9yIGVsc2UgaXQgbmVlZHMgdG8gYmUgY2F1Z2h0IGFuZCByZS10aHJvd25cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuVGltZW91dEVycm9yKGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgYXN5bmNocm9ub3VzIHNjcmlwdCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGByZXN1bHQgYWZ0ZXIgJHt0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXMnKSk7YCk7XG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIHRyeSB0byBnZXQgcmlkIG9mIHRoZSBwcm9taXNlXG4gICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtgZGVsZXRlIHdpbmRvdy4ke3Byb21pc2VOYW1lfTtgLCBbbnVsbCwgbnVsbF0sIHN1YmNvbW1hbmRUaW1lb3V0XSwgZnJhbWVzKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbiAgcmV0dXJuIGNvbnZlcnRSZXN1bHQocmVzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoY29tbWFuZCwgb3ZlcnJpZGUpIHtcbiAgLy8gaWYgdGhlIHBhZ2UgaXMgbm90IGxvYWRlZCB5ZXQsIHdhaXQgZm9yIGl0XG4gIGlmICh0aGlzLnBhZ2VMb2FkaW5nICYmICFvdmVycmlkZSkge1xuICAgIGxvZy5kZWJ1ZygnVHJ5aW5nIHRvIGV4ZWN1dGUgYnV0IHBhZ2UgaXMgbm90IGxvYWRlZC4nKTtcbiAgICBhd2FpdCB0aGlzLndhaXRGb3JEb20oKTtcbiAgfVxuXG4gIGNoZWNrUGFyYW1zKHthcHBJZEtleTogdGhpcy5hcHBJZEtleSwgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleX0pO1xuXG4gIGlmICh0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlKSB7XG4gICAgYXdhaXQgdGhpcy5nYXJiYWdlQ29sbGVjdCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBTZW5kaW5nIGphdmFzY3JpcHQgY29tbWFuZDogJyR7Xy50cnVuY2F0ZShjb21tYW5kLCB7bGVuZ3RoOiA1MH0pfSdgKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUnVudGltZS5ldmFsdWF0ZScsIHtcbiAgICBleHByZXNzaW9uOiBjb21tYW5kLFxuICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnZlcnRSZXN1bHQocmVzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsbEZ1bmN0aW9uIChvYmplY3RJZCwgZm4sIGFyZ3MpIHtcbiAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG5cbiAgaWYgKHRoaXMuZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUpIHtcbiAgICBhd2FpdCB0aGlzLmdhcmJhZ2VDb2xsZWN0KCk7XG4gIH1cblxuICBsb2cuZGVidWcoJ0NhbGxpbmcgamF2YXNjcmlwdCBmdW5jdGlvbicpO1xuICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdSdW50aW1lLmNhbGxGdW5jdGlvbk9uJywge1xuICAgIG9iamVjdElkLFxuICAgIGZ1bmN0aW9uRGVjbGFyYXRpb246IGZuLFxuICAgIGFyZ3VtZW50czogYXJncyxcbiAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gIH0pO1xuXG4gIHJldHVybiBjb252ZXJ0UmVzdWx0KHJlcyk7XG59XG5cblxuZXhwb3J0IGRlZmF1bHQgeyBleGVjdXRlQXRvbSwgZXhlY3V0ZUF0b21Bc3luYywgZXhlY3V0ZSwgY2FsbEZ1bmN0aW9uIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQSxNQUFNQSx1QkFBdUIsR0FBRyxJQUFJOztBQVNwQyxlQUFlQyxXQUFXLENBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxNQUFNLEVBQUU7RUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQ0MsU0FBUyxDQUFDQyxXQUFXLEVBQUU7SUFDL0IsTUFBTSxJQUFJQyxLQUFLLENBQUMsa0NBQWtDLENBQUM7RUFDckQ7RUFFQUMsZUFBRyxDQUFDQyxLQUFLLENBQUUsbUJBQWtCUCxJQUFLLGdCQUFlUSxJQUFJLENBQUNDLFNBQVMsQ0FBQ1IsSUFBSSxDQUFFLFlBQVdDLE1BQU8sR0FBRSxDQUFDO0VBQzNGLE1BQU1RLE1BQU0sR0FBRyxNQUFNLElBQUFDLHVCQUFnQixFQUFDWCxJQUFJLEVBQUVDLElBQUksRUFBRUMsTUFBTSxDQUFDO0VBQ3pELE1BQU1VLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQ0MsT0FBTyxDQUFDSCxNQUFNLEVBQUUs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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","names":["RPC_RESPONSE_TIMEOUT_MS","executeAtom","atom","args","frames","rpcClient","isConnected","Error","log","debug","JSON","stringify","script","getScriptForAtom","value","execute","_","truncate","simpleStringify","length","RESPONSE_LOG_LENGTH","executeAtomAsync","evaluate","method","opts","send","Object","assign","appIdKey","pageIdKey","returnByValue","promiseName","util","uuidV4","replace","obj","expression","promiseObjectId","result","objectId","asyncCallBack","res","subcommandTimeout","generatePreview","saveResult","err","message","includes","retryWait","timeout","retries","parseInt","timer","timing","Timer","start","retryInterval","hasValue","errors","TimeoutError","getDuration","asMilliSeconds","toFixed","ign","convertResult","command","override","pageLoading","waitForDom","checkParams","garbageCollectOnExecute","garbageCollect","callFunction","fn","functionDeclaration","arguments"],"sources":["../../../lib/mixins/execute.js"],"sourcesContent":["import log from '../logger';\nimport { errors } from 'appium/driver';\nimport { checkParams, simpleStringify, convertResult, RESPONSE_LOG_LENGTH } from '../utils';\nimport { getScriptForAtom } from '../atoms';\nimport { util, timing } from 'appium/support';\nimport { retryInterval } from 'asyncbox';\nimport _ from 'lodash';\n\n\n/* How many milliseconds to wait for webkit to return a response before timing out */\nconst RPC_RESPONSE_TIMEOUT_MS = 5000;\n\n/**\n * Execute a Selenium atom in Safari\n * @param {string} atom Name of Selenium atom (see atoms/ directory)\n * @param {Array<*>} args Arguments passed to the atom\n * @param {Array<string>} frames\n * @returns {string} The result received from the atom\n */\nasync function executeAtom (atom, args, frames) {\n if (!this.rpcClient.isConnected) {\n throw new Error('Remote debugger is not connected');\n }\n\n log.debug(`Executing atom '${atom}' with 'args=${JSON.stringify(args)}; frames=${frames}'`);\n const script = await getScriptForAtom(atom, args, frames);\n const value = await this.execute(script, true);\n log.debug(`Received result for atom '${atom}' execution: ${_.truncate(simpleStringify(value), {length: RESPONSE_LOG_LENGTH})}`);\n return value;\n}\n\nasync function executeAtomAsync (atom, args, frames) {\n // helper to send directly to the web inspector\n const evaluate = async (method, opts) => await this.rpcClient.send(method, Object.assign({\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n returnByValue: false,\n }, opts));\n\n // first create a Promise on the page, saving the resolve/reject functions\n // as properties\n const promiseName = `appiumAsyncExecutePromise${util.uuidV4().replace(/-/g, '')}`;\n const script =\n `var res, rej;\n window.${promiseName} = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n window.${promiseName}.resolve = res;\n window.${promiseName}.reject = rej;\n window.${promiseName};`;\n const obj = await evaluate('Runtime.evaluate', {\n expression: script,\n });\n const promiseObjectId = obj.result.objectId;\n\n // execute the atom, calling back to the resolve function\n const asyncCallBack =\n `function (res) {\n window.${promiseName}.resolve(res);\n window.${promiseName}Value = res;\n }`;\n await this.execute(await getScriptForAtom(atom, args, frames, asyncCallBack));\n\n // wait for the promise to be resolved\n let res;\n const subcommandTimeout = 1000; // timeout on individual commands\n try {\n res = await evaluate('Runtime.awaitPromise', {\n promiseObjectId,\n returnByValue: true,\n generatePreview: true,\n saveResult: true,\n });\n } catch (err) {\n if (!err.message.includes(`'Runtime.awaitPromise' was not found`)) {\n throw err;\n }\n // awaitPromise is not always available, so simulate it with poll\n const retryWait = 100;\n const timeout = (args.length >= 3) ? args[2] : RPC_RESPONSE_TIMEOUT_MS;\n // if the timeout math turns up 0 retries, make sure it happens once\n const retries = parseInt(timeout / retryWait, 10) || 1;\n const timer = new timing.Timer().start();\n log.debug(`Waiting up to ${timeout}ms for async execute to finish`);\n res = await retryInterval(retries, retryWait, async () => {\n // the atom _will_ return, either because it finished or an error\n // including a timeout error\n const hasValue = await evaluate('Runtime.evaluate', {\n expression: `window.hasOwnProperty('${promiseName}Value');`,\n returnByValue: true,\n });\n if (hasValue) {\n // we only put the property on `window` when the callback is called,\n // so if it is there, everything is done\n return await evaluate('Runtime.evaluate', {\n expression: `window.${promiseName}Value;`,\n returnByValue: true,\n });\n }\n // throw a TimeoutError, or else it needs to be caught and re-thrown\n throw new errors.TimeoutError(`Timed out waiting for asynchronous script ` +\n `result after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms'));`);\n });\n } finally {\n try {\n // try to get rid of the promise\n await this.executeAtom('execute_script', [`delete window.${promiseName};`, [null, null], subcommandTimeout], frames);\n } catch (ign) {}\n }\n return convertResult(res);\n}\n\nasync function execute (command, override) {\n // if the page is not loaded yet, wait for it\n if (this.pageLoading && !override) {\n log.debug('Trying to execute but page is not loaded.');\n await this.waitForDom();\n }\n\n checkParams({appIdKey: this.appIdKey, pageIdKey: this.pageIdKey});\n\n if (this.garbageCollectOnExecute) {\n await this.garbageCollect();\n }\n\n log.debug(`Sending javascript command: '${_.truncate(command, {length: 50})}'`);\n const res = await this.rpcClient.send('Runtime.evaluate', {\n expression: command,\n returnByValue: true,\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n\n return convertResult(res);\n}\n\nasync function callFunction (objectId, fn, args) {\n checkParams({appIdKey: this.appIdKey, pageIdKey: this.pageIdKey});\n\n if (this.garbageCollectOnExecute) {\n await this.garbageCollect();\n }\n\n log.debug('Calling javascript function');\n const res = await this.rpcClient.send('Runtime.callFunctionOn', {\n objectId,\n functionDeclaration: fn,\n arguments: args,\n returnByValue: true,\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n\n return convertResult(res);\n}\n\n\nexport default { executeAtom, executeAtomAsync, execute, callFunction };\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -13,21 +12,14 @@ Object.defineProperty(exports, "events", {
13
12
  }
14
13
  });
15
14
  exports.mixins = void 0;
16
-
17
15
  require("source-map-support/register");
18
-
19
16
  var _connect = _interopRequireDefault(require("./connect"));
20
-
21
17
  var _events = _interopRequireDefault(require("./events"));
22
-
23
18
  var _execute = _interopRequireDefault(require("./execute"));
24
-
25
19
  var _navigate = _interopRequireDefault(require("./navigate"));
26
-
27
20
  var _messageHandlers = _interopRequireDefault(require("./message-handlers"));
28
-
29
21
  const mixins = Object.assign({}, _connect.default, _events.default, _execute.default, _navigate.default, _messageHandlers.default);
30
22
  exports.mixins = mixins;
31
23
  var _default = mixins;
32
24
  exports.default = _default;
33
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtaXhpbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJjb25uZWN0IiwiZXZlbnRzIiwiZXhlY3V0ZSIsIm5hdmlnYXRlIiwibWVzc2FnZUhhbmRsZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL21peGlucy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29ubmVjdCBmcm9tICcuL2Nvbm5lY3QnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgZXhlY3V0ZSBmcm9tICcuL2V4ZWN1dGUnO1xuaW1wb3J0IG5hdmlnYXRlIGZyb20gJy4vbmF2aWdhdGUnO1xuaW1wb3J0IG1lc3NhZ2VIYW5kbGVycyBmcm9tICcuL21lc3NhZ2UtaGFuZGxlcnMnO1xuXG5cbmNvbnN0IG1peGlucyA9IE9iamVjdC5hc3NpZ24oe30sXG4gIGNvbm5lY3QsIGV2ZW50cywgZXhlY3V0ZSwgbmF2aWdhdGUsIG1lc3NhZ2VIYW5kbGVyc1xuKTtcblxuXG5leHBvcnQgeyBtaXhpbnMsIGV2ZW50cyB9O1xuZXhwb3J0IGRlZmF1bHQgbWl4aW5zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxNQUFNLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFDYkMsZ0JBRGEsRUFDSkMsZUFESSxFQUNJQyxnQkFESixFQUNhQyxpQkFEYixFQUN1QkMsd0JBRHZCLENBQWY7O2VBTWVQLE0ifQ==
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtaXhpbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJjb25uZWN0IiwiZXZlbnRzIiwiZXhlY3V0ZSIsIm5hdmlnYXRlIiwibWVzc2FnZUhhbmRsZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL21peGlucy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29ubmVjdCBmcm9tICcuL2Nvbm5lY3QnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgZXhlY3V0ZSBmcm9tICcuL2V4ZWN1dGUnO1xuaW1wb3J0IG5hdmlnYXRlIGZyb20gJy4vbmF2aWdhdGUnO1xuaW1wb3J0IG1lc3NhZ2VIYW5kbGVycyBmcm9tICcuL21lc3NhZ2UtaGFuZGxlcnMnO1xuXG5cbmNvbnN0IG1peGlucyA9IE9iamVjdC5hc3NpZ24oe30sXG4gIGNvbm5lY3QsIGV2ZW50cywgZXhlY3V0ZSwgbmF2aWdhdGUsIG1lc3NhZ2VIYW5kbGVyc1xuKTtcblxuXG5leHBvcnQgeyBtaXhpbnMsIGV2ZW50cyB9O1xuZXhwb3J0IGRlZmF1bHQgbWl4aW5zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0EsTUFBTUEsTUFBTSxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDN0JDLGdCQUFPLEVBQUVDLGVBQU0sRUFBRUMsZ0JBQU8sRUFBRUMsaUJBQVEsRUFBRUMsd0JBQWUsQ0FDcEQ7QUFBQztBQUFBLGVBSWFQLE1BQU07QUFBQSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["mixins","Object","assign","connect","events","execute","navigate","messageHandlers"],"sources":["../../../lib/mixins/index.js"],"sourcesContent":["import connect from './connect';\nimport events from './events';\nimport execute from './execute';\nimport navigate from './navigate';\nimport messageHandlers from './message-handlers';\n\n\nconst mixins = Object.assign({},\n connect, events, execute, navigate, messageHandlers\n);\n\n\nexport { mixins, events };\nexport default mixins;\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAGA,MAAMA,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAC7BC,gBAAO,EAAEC,eAAM,EAAEC,gBAAO,EAAEC,iBAAQ,EAAEC,wBAAe,CACpD;AAAC;AAAA,eAIaP,MAAM;AAAA"}
@@ -1,27 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  require("source-map-support/register");
11
-
12
9
  var _logger = _interopRequireDefault(require("../logger"));
13
-
14
10
  var _events = _interopRequireDefault(require("./events"));
15
-
16
11
  var _utils = require("../utils");
17
-
18
12
  var _lodash = _interopRequireDefault(require("lodash"));
19
13
 
20
14
  async function onPageChange(err, appIdKey, pageDict) {
21
15
  if (_lodash.default.isEmpty(pageDict)) {
22
16
  return;
23
17
  }
24
-
25
18
  const pageArray = (0, _utils.pageArrayFromDict)(pageDict);
26
19
  await this.useAppDictLock(done => {
27
20
  try {
@@ -32,36 +25,28 @@ async function onPageChange(err, appIdKey, pageDict) {
32
25
  } else {
33
26
  if (_lodash.default.isEqual(this.appDict[appIdKey].pageArray, pageArray)) {
34
27
  _logger.default.debug(`Received page change notice for app '${appIdKey}' ` + `but the listing has not changed. Ignoring.`);
35
-
36
28
  return done();
37
29
  }
38
30
  }
39
31
  }
40
-
41
32
  this.appDict[appIdKey].pageArray = pageArray;
42
33
  }
43
34
  } finally {
44
35
  done();
45
36
  }
46
37
  });
47
-
48
38
  if (this._navigatingToPage) {
49
39
  return;
50
40
  }
51
-
52
41
  _logger.default.debug(`Page changed: ${(0, _utils.simpleStringify)(pageDict, true)}`);
53
-
54
42
  this.emit(_events.default.EVENT_PAGE_CHANGE, {
55
43
  appIdKey: appIdKey.replace('PID:', ''),
56
44
  pageArray
57
45
  });
58
46
  }
59
-
60
47
  async function onAppConnect(err, dict) {
61
48
  const appIdKey = dict.WIRApplicationIdentifierKey;
62
-
63
49
  _logger.default.debug(`Notified that new application '${appIdKey}' has connected`);
64
-
65
50
  await this.useAppDictLock(done => {
66
51
  try {
67
52
  this.updateAppsWithDict(dict);
@@ -70,30 +55,23 @@ async function onAppConnect(err, dict) {
70
55
  }
71
56
  });
72
57
  }
73
-
74
58
  function onAppDisconnect(err, dict) {
75
59
  const appIdKey = dict.WIRApplicationIdentifierKey;
76
-
77
60
  _logger.default.debug(`Application '${appIdKey}' disconnected. Removing from app dictionary.`);
78
-
79
61
  _logger.default.debug(`Current app is '${this.appIdKey}'`);
80
62
 
81
63
  delete this.appDict[appIdKey];
82
64
 
83
65
  if (this.appIdKey === appIdKey) {
84
66
  _logger.default.debug(`No longer have app id. Attempting to find new one.`);
85
-
86
67
  this.appIdKey = (0, _utils.getDebuggerAppKey)(this.bundleId, this.appDict);
87
68
  }
88
-
89
69
  if (!this.appDict) {
90
70
  _logger.default.debug('Main app disconnected. Disconnecting altogether.');
91
-
92
71
  this.connected = false;
93
72
  this.emit(_events.default.EVENT_DISCONNECT, true);
94
73
  }
95
74
  }
96
-
97
75
  async function onAppUpdate(err, dict) {
98
76
  await this.useAppDictLock(done => {
99
77
  try {
@@ -103,34 +81,25 @@ async function onAppUpdate(err, dict) {
103
81
  }
104
82
  });
105
83
  }
106
-
107
84
  function onConnectedDriverList(err, drivers) {
108
85
  this.connectedDrivers = drivers.WIRDriverDictionaryKey;
109
-
110
86
  _logger.default.debug(`Received connected driver list: ${JSON.stringify(this.connectedDrivers)}`);
111
87
  }
112
-
113
88
  function onCurrentState(err, state) {
114
89
  this.currentState = state.WIRAutomationAvailabilityKey;
115
-
116
90
  _logger.default.debug(`Received connected automation availability state: ${JSON.stringify(this.currentState)}`);
117
91
  }
118
-
119
92
  async function onConnectedApplicationList(err, apps) {
120
93
  _logger.default.debug(`Received connected applications list: ${_lodash.default.keys(apps).join(', ')}`);
121
94
 
122
95
  let newDict = {};
123
-
124
96
  for (const dict of _lodash.default.values(apps)) {
125
97
  const [id, entry] = (0, _utils.appInfoFromDict)(dict);
126
-
127
98
  if (this.skippedApps.includes(entry.name)) {
128
99
  continue;
129
100
  }
130
-
131
101
  newDict[id] = entry;
132
102
  }
133
-
134
103
  await this.useAppDictLock(done => {
135
104
  try {
136
105
  _lodash.default.defaults(this.appDict, newDict);
@@ -139,7 +108,6 @@ async function onConnectedApplicationList(err, apps) {
139
108
  }
140
109
  });
141
110
  }
142
-
143
111
  const messageHandlers = {
144
112
  onPageChange,
145
113
  onAppConnect,
@@ -151,4 +119,4 @@ const messageHandlers = {
151
119
  };
152
120
  var _default = messageHandlers;
153
121
  exports.default = _default;
154
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvblBhZ2VDaGFuZ2UiLCJlcnIiLCJhcHBJZEtleSIsInBhZ2VEaWN0IiwiXyIsImlzRW1wdHkiLCJwYWdlQXJyYXkiLCJwYWdlQXJyYXlGcm9tRGljdCIsInVzZUFwcERpY3RMb2NrIiwiZG9uZSIsImFwcERpY3QiLCJyZXNvbHZlIiwiaXNFcXVhbCIsImxvZyIsImRlYnVnIiwiX25hdmlnYXRpbmdUb1BhZ2UiLCJzaW1wbGVTdHJpbmdpZnkiLCJlbWl0IiwiZXZlbnRzIiwiRVZFTlRfUEFHRV9DSEFOR0UiLCJyZXBsYWNlIiwib25BcHBDb25uZWN0IiwiZGljdCIsIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsInVwZGF0ZUFwcHNXaXRoRGljdCIsIm9uQXBwRGlzY29ubmVjdCIsImdldERlYnVnZ2VyQXBwS2V5IiwiYnVuZGxlSWQiLCJjb25uZWN0ZWQiLCJFVkVOVF9ESVNDT05ORUNUIiwib25BcHBVcGRhdGUiLCJvbkNvbm5lY3RlZERyaXZlckxpc3QiLCJkcml2ZXJzIiwiY29ubmVjdGVkRHJpdmVycyIsIldJUkRyaXZlckRpY3Rpb25hcnlLZXkiLCJKU09OIiwic3RyaW5naWZ5Iiwib25DdXJyZW50U3RhdGUiLCJzdGF0ZSIsImN1cnJlbnRTdGF0ZSIsIldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXkiLCJvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCIsImFwcHMiLCJrZXlzIiwiam9pbiIsIm5ld0RpY3QiLCJ2YWx1ZXMiLCJpZCIsImVudHJ5IiwiYXBwSW5mb0Zyb21EaWN0Iiwic2tpcHBlZEFwcHMiLCJpbmNsdWRlcyIsIm5hbWUiLCJkZWZhdWx0cyIsIm1lc3NhZ2VIYW5kbGVycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9taXhpbnMvbWVzc2FnZS1oYW5kbGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgZXZlbnRzIGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IHBhZ2VBcnJheUZyb21EaWN0LCBnZXREZWJ1Z2dlckFwcEtleSwgc2ltcGxlU3RyaW5naWZ5LCBhcHBJbmZvRnJvbURpY3QgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbi8qXG4gKiBHZW5lcmljIGNhbGxiYWNrcyB1c2VkIHRocm91Z2hvdXQgdGhlIGxpZmVjeWNsZSBvZiB0aGUgUmVtb3RlIERlYnVnZ2VyLlxuICogVGhlc2Ugd2lsbCBiZSBhZGRlZCB0byB0aGUgcHJvdG90eXBlLlxuICovXG5cbmFzeW5jIGZ1bmN0aW9uIG9uUGFnZUNoYW5nZSAoZXJyLCBhcHBJZEtleSwgcGFnZURpY3QpIHtcbiAgaWYgKF8uaXNFbXB0eShwYWdlRGljdCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYWdlQXJyYXkgPSBwYWdlQXJyYXlGcm9tRGljdChwYWdlRGljdCk7XG5cbiAgYXdhaXQgdGhpcy51c2VBcHBEaWN0TG9jaygoZG9uZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBzYXZlIHRoZSBwYWdlIGRpY3QgZm9yIHRoaXMgYXBwXG4gICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XSkge1xuICAgICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkpIHtcbiAgICAgICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkucmVzb2x2ZSkge1xuICAgICAgICAgICAgLy8gcGFnZURpY3QgaXMgYSBwZW5kaW5nIHByb21pc2UsIHNvIHJlc29sdmVcbiAgICAgICAgICAgIHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5LnJlc29sdmUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHByZS1leGlzdGluZyBwYWdlRGljdFxuICAgICAgICAgICAgaWYgKF8uaXNFcXVhbCh0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSwgcGFnZUFycmF5KSkge1xuICAgICAgICAgICAgICBsb2cuZGVidWcoYFJlY2VpdmVkIHBhZ2UgY2hhbmdlIG5vdGljZSBmb3IgYXBwICcke2FwcElkS2V5fScgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgYnV0IHRoZSBsaXN0aW5nIGhhcyBub3QgY2hhbmdlZC4gSWdub3JpbmcuYCk7XG4gICAgICAgICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIHBhZ2UgZGljdGlvbmFyeVxuICAgICAgICB0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSA9IHBhZ2VBcnJheTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHRoaXMuX25hdmlnYXRpbmdUb1BhZ2UpIHtcbiAgICAvLyBpbiB0aGUgbWlkZGxlIG9mIG5hdmlnYXRpbmcsIHNvIHJlcG9ydGluZyBhIHBhZ2UgY2hhbmdlIHdpbGwgY2F1c2UgcHJvYmxlbXNcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2cuZGVidWcoYFBhZ2UgY2hhbmdlZDogJHtzaW1wbGVTdHJpbmdpZnkocGFnZURpY3QsIHRydWUpfWApO1xuXG4gIHRoaXMuZW1pdChldmVudHMuRVZFTlRfUEFHRV9DSEFOR0UsIHtcbiAgICBhcHBJZEtleTogYXBwSWRLZXkucmVwbGFjZSgnUElEOicsICcnKSxcbiAgICBwYWdlQXJyYXksXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvbkFwcENvbm5lY3QgKGVyciwgZGljdCkge1xuICBjb25zdCBhcHBJZEtleSA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICBsb2cuZGVidWcoYE5vdGlmaWVkIHRoYXQgbmV3IGFwcGxpY2F0aW9uICcke2FwcElkS2V5fScgaGFzIGNvbm5lY3RlZGApO1xuICBhd2FpdCB0aGlzLnVzZUFwcERpY3RMb2NrKChkb25lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudXBkYXRlQXBwc1dpdGhEaWN0KGRpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gb25BcHBEaXNjb25uZWN0IChlcnIsIGRpY3QpIHtcbiAgY29uc3QgYXBwSWRLZXkgPSBkaWN0LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgbG9nLmRlYnVnKGBBcHBsaWNhdGlvbiAnJHthcHBJZEtleX0nIGRpc2Nvbm5lY3RlZC4gUmVtb3ZpbmcgZnJvbSBhcHAgZGljdGlvbmFyeS5gKTtcbiAgbG9nLmRlYnVnKGBDdXJyZW50IGFwcCBpcyAnJHt0aGlzLmFwcElkS2V5fSdgKTtcblxuICAvLyBnZXQgcmlkIG9mIHRoZSBlbnRyeSBpbiBvdXIgYXBwIGRpY3Rpb25hcnksXG4gIC8vIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBhdmFpbGFibGVcbiAgZGVsZXRlIHRoaXMuYXBwRGljdFthcHBJZEtleV07XG5cbiAgLy8gaWYgdGhlIGRpc2Nvbm5lY3RlZCBhcHAgaXMgdGhlIG9uZSB3ZSBhcmUgY29ubmVjdGVkIHRvLCB0cnkgdG8gZmluZCBhbm90aGVyXG4gIGlmICh0aGlzLmFwcElkS2V5ID09PSBhcHBJZEtleSkge1xuICAgIGxvZy5kZWJ1ZyhgTm8gbG9uZ2VyIGhhdmUgYXBwIGlkLiBBdHRlbXB0aW5nIHRvIGZpbmQgbmV3IG9uZS5gKTtcbiAgICB0aGlzLmFwcElkS2V5ID0gZ2V0RGVidWdnZXJBcHBLZXkodGhpcy5idW5kbGVJZCwgdGhpcy5hcHBEaWN0KTtcbiAgfVxuXG4gIGlmICghdGhpcy5hcHBEaWN0KSB7XG4gICAgLy8gdGhpcyBtZWFucyB3ZSBubyBsb25nZXIgaGF2ZSBhbnkgYXBwcy4gd2hhdCB0aGUgd2hhdD9cbiAgICBsb2cuZGVidWcoJ01haW4gYXBwIGRpc2Nvbm5lY3RlZC4gRGlzY29ubmVjdGluZyBhbHRvZ2V0aGVyLicpO1xuICAgIHRoaXMuY29ubmVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KGV2ZW50cy5FVkVOVF9ESVNDT05ORUNULCB0cnVlKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBvbkFwcFVwZGF0ZSAoZXJyLCBkaWN0KSB7XG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy51cGRhdGVBcHBzV2l0aERpY3QoZGljdCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGRvbmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvbkNvbm5lY3RlZERyaXZlckxpc3QgKGVyciwgZHJpdmVycykge1xuICB0aGlzLmNvbm5lY3RlZERyaXZlcnMgPSBkcml2ZXJzLldJUkRyaXZlckRpY3Rpb25hcnlLZXk7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgY29ubmVjdGVkIGRyaXZlciBsaXN0OiAke0pTT04uc3RyaW5naWZ5KHRoaXMuY29ubmVjdGVkRHJpdmVycyl9YCk7XG59XG5cbmZ1bmN0aW9uIG9uQ3VycmVudFN0YXRlIChlcnIsIHN0YXRlKSB7XG4gIHRoaXMuY3VycmVudFN0YXRlID0gc3RhdGUuV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleTtcbiAgLy8gVGhpcyBzdGF0ZSBjaGFuZ2VzIHdoZW4gJ1JlbW90ZSBBdXRvbWF0aW9uJyBpbiAnU2V0dGluZ3MgYXBwJyA+ICdTYWZhcmknID4gJ0FkdmFuY2VkJyA+ICdSZW1vdGUgQXV0b21hdGlvbicgY2hhbmdlc1xuICAvLyBXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5QXZhaWxhYmxlIG9yIFdJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlOb3RBdmFpbGFibGVcbiAgbG9nLmRlYnVnKGBSZWNlaXZlZCBjb25uZWN0ZWQgYXV0b21hdGlvbiBhdmFpbGFiaWxpdHkgc3RhdGU6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5jdXJyZW50U3RhdGUpfWApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCAoZXJyLCBhcHBzKSB7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgY29ubmVjdGVkIGFwcGxpY2F0aW9ucyBsaXN0OiAke18ua2V5cyhhcHBzKS5qb2luKCcsICcpfWApO1xuXG4gIC8vIHRyYW5zbGF0ZSB0aGUgcmVjZWl2ZWQgaW5mb3JtYXRpb24gaW50byBhbiBlYXNpZXItdG8tbWFuYWdlXG4gIC8vIGhhc2ggd2l0aCBhcHAgaWQgYXMga2V5LCBhbmQgYXBwIGluZm8gYXMgdmFsdWVcbiAgbGV0IG5ld0RpY3QgPSB7fTtcbiAgZm9yIChjb25zdCBkaWN0IG9mIF8udmFsdWVzKGFwcHMpKSB7XG4gICAgY29uc3QgW2lkLCBlbnRyeV0gPSBhcHBJbmZvRnJvbURpY3QoZGljdCk7XG4gICAgaWYgKHRoaXMuc2tpcHBlZEFwcHMuaW5jbHVkZXMoZW50cnkubmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBuZXdEaWN0W2lkXSA9IGVudHJ5O1xuICB9XG4gIC8vIHVwZGF0ZSB0aGUgb2JqZWN0J3MgbGlzdCBvZiBhcHBzXG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgXy5kZWZhdWx0cyh0aGlzLmFwcERpY3QsIG5ld0RpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuY29uc3QgbWVzc2FnZUhhbmRsZXJzID0ge1xuICBvblBhZ2VDaGFuZ2UsXG4gIG9uQXBwQ29ubmVjdCxcbiAgb25BcHBEaXNjb25uZWN0LFxuICBvbkFwcFVwZGF0ZSxcbiAgb25Db25uZWN0ZWREcml2ZXJMaXN0LFxuICBvbkN1cnJlbnRTdGF0ZSxcbiAgb25Db25uZWN0ZWRBcHBsaWNhdGlvbkxpc3QsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXNzYWdlSGFuZGxlcnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7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
122
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvblBhZ2VDaGFuZ2UiLCJlcnIiLCJhcHBJZEtleSIsInBhZ2VEaWN0IiwiXyIsImlzRW1wdHkiLCJwYWdlQXJyYXkiLCJwYWdlQXJyYXlGcm9tRGljdCIsInVzZUFwcERpY3RMb2NrIiwiZG9uZSIsImFwcERpY3QiLCJyZXNvbHZlIiwiaXNFcXVhbCIsImxvZyIsImRlYnVnIiwiX25hdmlnYXRpbmdUb1BhZ2UiLCJzaW1wbGVTdHJpbmdpZnkiLCJlbWl0IiwiZXZlbnRzIiwiRVZFTlRfUEFHRV9DSEFOR0UiLCJyZXBsYWNlIiwib25BcHBDb25uZWN0IiwiZGljdCIsIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsInVwZGF0ZUFwcHNXaXRoRGljdCIsIm9uQXBwRGlzY29ubmVjdCIsImdldERlYnVnZ2VyQXBwS2V5IiwiYnVuZGxlSWQiLCJjb25uZWN0ZWQiLCJFVkVOVF9ESVNDT05ORUNUIiwib25BcHBVcGRhdGUiLCJvbkNvbm5lY3RlZERyaXZlckxpc3QiLCJkcml2ZXJzIiwiY29ubmVjdGVkRHJpdmVycyIsIldJUkRyaXZlckRpY3Rpb25hcnlLZXkiLCJKU09OIiwic3RyaW5naWZ5Iiwib25DdXJyZW50U3RhdGUiLCJzdGF0ZSIsImN1cnJlbnRTdGF0ZSIsIldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXkiLCJvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCIsImFwcHMiLCJrZXlzIiwiam9pbiIsIm5ld0RpY3QiLCJ2YWx1ZXMiLCJpZCIsImVudHJ5IiwiYXBwSW5mb0Zyb21EaWN0Iiwic2tpcHBlZEFwcHMiLCJpbmNsdWRlcyIsIm5hbWUiLCJkZWZhdWx0cyIsIm1lc3NhZ2VIYW5kbGVycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9taXhpbnMvbWVzc2FnZS1oYW5kbGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgZXZlbnRzIGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IHBhZ2VBcnJheUZyb21EaWN0LCBnZXREZWJ1Z2dlckFwcEtleSwgc2ltcGxlU3RyaW5naWZ5LCBhcHBJbmZvRnJvbURpY3QgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbi8qXG4gKiBHZW5lcmljIGNhbGxiYWNrcyB1c2VkIHRocm91Z2hvdXQgdGhlIGxpZmVjeWNsZSBvZiB0aGUgUmVtb3RlIERlYnVnZ2VyLlxuICogVGhlc2Ugd2lsbCBiZSBhZGRlZCB0byB0aGUgcHJvdG90eXBlLlxuICovXG5cbmFzeW5jIGZ1bmN0aW9uIG9uUGFnZUNoYW5nZSAoZXJyLCBhcHBJZEtleSwgcGFnZURpY3QpIHtcbiAgaWYgKF8uaXNFbXB0eShwYWdlRGljdCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYWdlQXJyYXkgPSBwYWdlQXJyYXlGcm9tRGljdChwYWdlRGljdCk7XG5cbiAgYXdhaXQgdGhpcy51c2VBcHBEaWN0TG9jaygoZG9uZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBzYXZlIHRoZSBwYWdlIGRpY3QgZm9yIHRoaXMgYXBwXG4gICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XSkge1xuICAgICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkpIHtcbiAgICAgICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkucmVzb2x2ZSkge1xuICAgICAgICAgICAgLy8gcGFnZURpY3QgaXMgYSBwZW5kaW5nIHByb21pc2UsIHNvIHJlc29sdmVcbiAgICAgICAgICAgIHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5LnJlc29sdmUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHByZS1leGlzdGluZyBwYWdlRGljdFxuICAgICAgICAgICAgaWYgKF8uaXNFcXVhbCh0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSwgcGFnZUFycmF5KSkge1xuICAgICAgICAgICAgICBsb2cuZGVidWcoYFJlY2VpdmVkIHBhZ2UgY2hhbmdlIG5vdGljZSBmb3IgYXBwICcke2FwcElkS2V5fScgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgYnV0IHRoZSBsaXN0aW5nIGhhcyBub3QgY2hhbmdlZC4gSWdub3JpbmcuYCk7XG4gICAgICAgICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIHBhZ2UgZGljdGlvbmFyeVxuICAgICAgICB0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSA9IHBhZ2VBcnJheTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHRoaXMuX25hdmlnYXRpbmdUb1BhZ2UpIHtcbiAgICAvLyBpbiB0aGUgbWlkZGxlIG9mIG5hdmlnYXRpbmcsIHNvIHJlcG9ydGluZyBhIHBhZ2UgY2hhbmdlIHdpbGwgY2F1c2UgcHJvYmxlbXNcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2cuZGVidWcoYFBhZ2UgY2hhbmdlZDogJHtzaW1wbGVTdHJpbmdpZnkocGFnZURpY3QsIHRydWUpfWApO1xuXG4gIHRoaXMuZW1pdChldmVudHMuRVZFTlRfUEFHRV9DSEFOR0UsIHtcbiAgICBhcHBJZEtleTogYXBwSWRLZXkucmVwbGFjZSgnUElEOicsICcnKSxcbiAgICBwYWdlQXJyYXksXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvbkFwcENvbm5lY3QgKGVyciwgZGljdCkge1xuICBjb25zdCBhcHBJZEtleSA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICBsb2cuZGVidWcoYE5vdGlmaWVkIHRoYXQgbmV3IGFwcGxpY2F0aW9uICcke2FwcElkS2V5fScgaGFzIGNvbm5lY3RlZGApO1xuICBhd2FpdCB0aGlzLnVzZUFwcERpY3RMb2NrKChkb25lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudXBkYXRlQXBwc1dpdGhEaWN0KGRpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gb25BcHBEaXNjb25uZWN0IChlcnIsIGRpY3QpIHtcbiAgY29uc3QgYXBwSWRLZXkgPSBkaWN0LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgbG9nLmRlYnVnKGBBcHBsaWNhdGlvbiAnJHthcHBJZEtleX0nIGRpc2Nvbm5lY3RlZC4gUmVtb3ZpbmcgZnJvbSBhcHAgZGljdGlvbmFyeS5gKTtcbiAgbG9nLmRlYnVnKGBDdXJyZW50IGFwcCBpcyAnJHt0aGlzLmFwcElkS2V5fSdgKTtcblxuICAvLyBnZXQgcmlkIG9mIHRoZSBlbnRyeSBpbiBvdXIgYXBwIGRpY3Rpb25hcnksXG4gIC8vIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBhdmFpbGFibGVcbiAgZGVsZXRlIHRoaXMuYXBwRGljdFthcHBJZEtleV07XG5cbiAgLy8gaWYgdGhlIGRpc2Nvbm5lY3RlZCBhcHAgaXMgdGhlIG9uZSB3ZSBhcmUgY29ubmVjdGVkIHRvLCB0cnkgdG8gZmluZCBhbm90aGVyXG4gIGlmICh0aGlzLmFwcElkS2V5ID09PSBhcHBJZEtleSkge1xuICAgIGxvZy5kZWJ1ZyhgTm8gbG9uZ2VyIGhhdmUgYXBwIGlkLiBBdHRlbXB0aW5nIHRvIGZpbmQgbmV3IG9uZS5gKTtcbiAgICB0aGlzLmFwcElkS2V5ID0gZ2V0RGVidWdnZXJBcHBLZXkodGhpcy5idW5kbGVJZCwgdGhpcy5hcHBEaWN0KTtcbiAgfVxuXG4gIGlmICghdGhpcy5hcHBEaWN0KSB7XG4gICAgLy8gdGhpcyBtZWFucyB3ZSBubyBsb25nZXIgaGF2ZSBhbnkgYXBwcy4gd2hhdCB0aGUgd2hhdD9cbiAgICBsb2cuZGVidWcoJ01haW4gYXBwIGRpc2Nvbm5lY3RlZC4gRGlzY29ubmVjdGluZyBhbHRvZ2V0aGVyLicpO1xuICAgIHRoaXMuY29ubmVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KGV2ZW50cy5FVkVOVF9ESVNDT05ORUNULCB0cnVlKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBvbkFwcFVwZGF0ZSAoZXJyLCBkaWN0KSB7XG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy51cGRhdGVBcHBzV2l0aERpY3QoZGljdCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGRvbmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvbkNvbm5lY3RlZERyaXZlckxpc3QgKGVyciwgZHJpdmVycykge1xuICB0aGlzLmNvbm5lY3RlZERyaXZlcnMgPSBkcml2ZXJzLldJUkRyaXZlckRpY3Rpb25hcnlLZXk7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgY29ubmVjdGVkIGRyaXZlciBsaXN0OiAke0pTT04uc3RyaW5naWZ5KHRoaXMuY29ubmVjdGVkRHJpdmVycyl9YCk7XG59XG5cbmZ1bmN0aW9uIG9uQ3VycmVudFN0YXRlIChlcnIsIHN0YXRlKSB7XG4gIHRoaXMuY3VycmVudFN0YXRlID0gc3RhdGUuV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleTtcbiAgLy8gVGhpcyBzdGF0ZSBjaGFuZ2VzIHdoZW4gJ1JlbW90ZSBBdXRvbWF0aW9uJyBpbiAnU2V0dGluZ3MgYXBwJyA+ICdTYWZhcmknID4gJ0FkdmFuY2VkJyA+ICdSZW1vdGUgQXV0b21hdGlvbicgY2hhbmdlc1xuICAvLyBXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5QXZhaWxhYmxlIG9yIFdJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlOb3RBdmFpbGFibGVcbiAgbG9nLmRlYnVnKGBSZWNlaXZlZCBjb25uZWN0ZWQgYXV0b21hdGlvbiBhdmFpbGFiaWxpdHkgc3RhdGU6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5jdXJyZW50U3RhdGUpfWApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCAoZXJyLCBhcHBzKSB7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgY29ubmVjdGVkIGFwcGxpY2F0aW9ucyBsaXN0OiAke18ua2V5cyhhcHBzKS5qb2luKCcsICcpfWApO1xuXG4gIC8vIHRyYW5zbGF0ZSB0aGUgcmVjZWl2ZWQgaW5mb3JtYXRpb24gaW50byBhbiBlYXNpZXItdG8tbWFuYWdlXG4gIC8vIGhhc2ggd2l0aCBhcHAgaWQgYXMga2V5LCBhbmQgYXBwIGluZm8gYXMgdmFsdWVcbiAgbGV0IG5ld0RpY3QgPSB7fTtcbiAgZm9yIChjb25zdCBkaWN0IG9mIF8udmFsdWVzKGFwcHMpKSB7XG4gICAgY29uc3QgW2lkLCBlbnRyeV0gPSBhcHBJbmZvRnJvbURpY3QoZGljdCk7XG4gICAgaWYgKHRoaXMuc2tpcHBlZEFwcHMuaW5jbHVkZXMoZW50cnkubmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBuZXdEaWN0W2lkXSA9IGVudHJ5O1xuICB9XG4gIC8vIHVwZGF0ZSB0aGUgb2JqZWN0J3MgbGlzdCBvZiBhcHBzXG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgXy5kZWZhdWx0cyh0aGlzLmFwcERpY3QsIG5ld0RpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuY29uc3QgbWVzc2FnZUhhbmRsZXJzID0ge1xuICBvblBhZ2VDaGFuZ2UsXG4gIG9uQXBwQ29ubmVjdCxcbiAgb25BcHBEaXNjb25uZWN0LFxuICBvbkFwcFVwZGF0ZSxcbiAgb25Db25uZWN0ZWREcml2ZXJMaXN0LFxuICBvbkN1cnJlbnRTdGF0ZSxcbiAgb25Db25uZWN0ZWRBcHBsaWNhdGlvbkxpc3QsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXNzYWdlSGFuZGxlcnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBUUEs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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-handlers.js","names":["onPageChange","err","appIdKey","pageDict","_","isEmpty","pageArray","pageArrayFromDict","useAppDictLock","done","appDict","resolve","isEqual","log","debug","_navigatingToPage","simpleStringify","emit","events","EVENT_PAGE_CHANGE","replace","onAppConnect","dict","WIRApplicationIdentifierKey","updateAppsWithDict","onAppDisconnect","getDebuggerAppKey","bundleId","connected","EVENT_DISCONNECT","onAppUpdate","onConnectedDriverList","drivers","connectedDrivers","WIRDriverDictionaryKey","JSON","stringify","onCurrentState","state","currentState","WIRAutomationAvailabilityKey","onConnectedApplicationList","apps","keys","join","newDict","values","id","entry","appInfoFromDict","skippedApps","includes","name","defaults","messageHandlers"],"sources":["../../../lib/mixins/message-handlers.js"],"sourcesContent":["import log from '../logger';\nimport events from './events';\nimport { pageArrayFromDict, getDebuggerAppKey, simpleStringify, appInfoFromDict } from '../utils';\nimport _ from 'lodash';\n\n\n/*\n * Generic callbacks used throughout the lifecycle of the Remote Debugger.\n * These will be added to the prototype.\n */\n\nasync function onPageChange (err, appIdKey, pageDict) {\n if (_.isEmpty(pageDict)) {\n return;\n }\n\n const pageArray = pageArrayFromDict(pageDict);\n\n await this.useAppDictLock((done) => {\n try {\n // save the page dict for this app\n if (this.appDict[appIdKey]) {\n if (this.appDict[appIdKey].pageArray) {\n if (this.appDict[appIdKey].pageArray.resolve) {\n // pageDict is a pending promise, so resolve\n this.appDict[appIdKey].pageArray.resolve();\n } else {\n // we have a pre-existing pageDict\n if (_.isEqual(this.appDict[appIdKey].pageArray, pageArray)) {\n log.debug(`Received page change notice for app '${appIdKey}' ` +\n `but the listing has not changed. Ignoring.`);\n return done();\n }\n }\n }\n // keep track of the page dictionary\n this.appDict[appIdKey].pageArray = pageArray;\n }\n } finally {\n done();\n }\n });\n\n if (this._navigatingToPage) {\n // in the middle of navigating, so reporting a page change will cause problems\n return;\n }\n\n log.debug(`Page changed: ${simpleStringify(pageDict, true)}`);\n\n this.emit(events.EVENT_PAGE_CHANGE, {\n appIdKey: appIdKey.replace('PID:', ''),\n pageArray,\n });\n}\n\nasync function onAppConnect (err, dict) {\n const appIdKey = dict.WIRApplicationIdentifierKey;\n log.debug(`Notified that new application '${appIdKey}' has connected`);\n await this.useAppDictLock((done) => {\n try {\n this.updateAppsWithDict(dict);\n } finally {\n done();\n }\n });\n}\n\nfunction onAppDisconnect (err, dict) {\n const appIdKey = dict.WIRApplicationIdentifierKey;\n log.debug(`Application '${appIdKey}' disconnected. Removing from app dictionary.`);\n log.debug(`Current app is '${this.appIdKey}'`);\n\n // get rid of the entry in our app dictionary,\n // since it is no longer available\n delete this.appDict[appIdKey];\n\n // if the disconnected app is the one we are connected to, try to find another\n if (this.appIdKey === appIdKey) {\n log.debug(`No longer have app id. Attempting to find new one.`);\n this.appIdKey = getDebuggerAppKey(this.bundleId, this.appDict);\n }\n\n if (!this.appDict) {\n // this means we no longer have any apps. what the what?\n log.debug('Main app disconnected. Disconnecting altogether.');\n this.connected = false;\n this.emit(events.EVENT_DISCONNECT, true);\n }\n}\n\nasync function onAppUpdate (err, dict) {\n await this.useAppDictLock((done) => {\n try {\n this.updateAppsWithDict(dict);\n } finally {\n done();\n }\n });\n}\n\nfunction onConnectedDriverList (err, drivers) {\n this.connectedDrivers = drivers.WIRDriverDictionaryKey;\n log.debug(`Received connected driver list: ${JSON.stringify(this.connectedDrivers)}`);\n}\n\nfunction onCurrentState (err, state) {\n this.currentState = state.WIRAutomationAvailabilityKey;\n // This state changes when 'Remote Automation' in 'Settings app' > 'Safari' > 'Advanced' > 'Remote Automation' changes\n // WIRAutomationAvailabilityAvailable or WIRAutomationAvailabilityNotAvailable\n log.debug(`Received connected automation availability state: ${JSON.stringify(this.currentState)}`);\n}\n\nasync function onConnectedApplicationList (err, apps) {\n log.debug(`Received connected applications list: ${_.keys(apps).join(', ')}`);\n\n // translate the received information into an easier-to-manage\n // hash with app id as key, and app info as value\n let newDict = {};\n for (const dict of _.values(apps)) {\n const [id, entry] = appInfoFromDict(dict);\n if (this.skippedApps.includes(entry.name)) {\n continue;\n }\n newDict[id] = entry;\n }\n // update the object's list of apps\n await this.useAppDictLock((done) => {\n try {\n _.defaults(this.appDict, newDict);\n } finally {\n done();\n }\n });\n}\n\nconst messageHandlers = {\n onPageChange,\n onAppConnect,\n onAppDisconnect,\n onAppUpdate,\n onConnectedDriverList,\n onCurrentState,\n onConnectedApplicationList,\n};\n\nexport default messageHandlers;\n"],"mappings":"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"}