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.
Files changed (86) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/build/index.js +18 -33
  3. package/build/lib/atoms.d.ts +17 -0
  4. package/build/lib/atoms.d.ts.map +1 -0
  5. package/build/lib/atoms.js +75 -50
  6. package/build/lib/atoms.js.map +1 -1
  7. package/build/lib/logger.d.ts +3 -0
  8. package/build/lib/logger.d.ts.map +1 -0
  9. package/build/lib/logger.js +5 -11
  10. package/build/lib/logger.js.map +1 -1
  11. package/build/lib/mixins/connect.d.ts +125 -0
  12. package/build/lib/mixins/connect.d.ts.map +1 -0
  13. package/build/lib/mixins/connect.js +299 -202
  14. package/build/lib/mixins/connect.js.map +1 -1
  15. package/build/lib/mixins/events.d.ts +7 -0
  16. package/build/lib/mixins/events.d.ts.map +1 -0
  17. package/build/lib/mixins/events.js +7 -12
  18. package/build/lib/mixins/events.js.map +1 -1
  19. package/build/lib/mixins/execute.d.ts +38 -0
  20. package/build/lib/mixins/execute.d.ts.map +1 -0
  21. package/build/lib/mixins/execute.js +162 -122
  22. package/build/lib/mixins/execute.js.map +1 -1
  23. package/build/lib/mixins/index.d.ts +5 -0
  24. package/build/lib/mixins/index.d.ts.map +1 -0
  25. package/build/lib/mixins/index.js +14 -23
  26. package/build/lib/mixins/index.js.map +1 -1
  27. package/build/lib/mixins/message-handlers.d.ts +92 -0
  28. package/build/lib/mixins/message-handlers.d.ts.map +1 -0
  29. package/build/lib/mixins/message-handlers.js +160 -97
  30. package/build/lib/mixins/message-handlers.js.map +1 -1
  31. package/build/lib/mixins/navigate.d.ts +92 -0
  32. package/build/lib/mixins/navigate.d.ts.map +1 -0
  33. package/build/lib/mixins/navigate.js +199 -141
  34. package/build/lib/mixins/navigate.js.map +1 -1
  35. package/build/lib/protocol/index.d.ts +14 -0
  36. package/build/lib/protocol/index.d.ts.map +1 -0
  37. package/build/lib/protocol/index.js +192 -118
  38. package/build/lib/protocol/index.js.map +1 -1
  39. package/build/lib/remote-debugger-real-device.d.ts +6 -0
  40. package/build/lib/remote-debugger-real-device.d.ts.map +1 -0
  41. package/build/lib/remote-debugger-real-device.js +29 -32
  42. package/build/lib/remote-debugger-real-device.js.map +1 -1
  43. package/build/lib/remote-debugger.d.ts +119 -0
  44. package/build/lib/remote-debugger.d.ts.map +1 -0
  45. package/build/lib/remote-debugger.js +256 -226
  46. package/build/lib/remote-debugger.js.map +1 -1
  47. package/build/lib/rpc/index.d.ts +4 -0
  48. package/build/lib/rpc/index.d.ts.map +1 -0
  49. package/build/lib/rpc/index.js +10 -21
  50. package/build/lib/rpc/index.js.map +1 -1
  51. package/build/lib/rpc/remote-messages.d.ts +51 -0
  52. package/build/lib/rpc/remote-messages.d.ts.map +1 -0
  53. package/build/lib/rpc/remote-messages.js +203 -224
  54. package/build/lib/rpc/remote-messages.js.map +1 -1
  55. package/build/lib/rpc/rpc-client-real-device.d.ts +6 -0
  56. package/build/lib/rpc/rpc-client-real-device.d.ts.map +1 -0
  57. package/build/lib/rpc/rpc-client-real-device.js +43 -49
  58. package/build/lib/rpc/rpc-client-real-device.js.map +1 -1
  59. package/build/lib/rpc/rpc-client-simulator.d.ts +15 -0
  60. package/build/lib/rpc/rpc-client-simulator.d.ts.map +1 -0
  61. package/build/lib/rpc/rpc-client-simulator.js +138 -125
  62. package/build/lib/rpc/rpc-client-simulator.js.map +1 -1
  63. package/build/lib/rpc/rpc-client.d.ts +142 -0
  64. package/build/lib/rpc/rpc-client.d.ts.map +1 -0
  65. package/build/lib/rpc/rpc-client.js +559 -418
  66. package/build/lib/rpc/rpc-client.js.map +1 -1
  67. package/build/lib/rpc/rpc-message-handler.d.ts +13 -0
  68. package/build/lib/rpc/rpc-message-handler.d.ts.map +1 -0
  69. package/build/lib/rpc/rpc-message-handler.js +181 -166
  70. package/build/lib/rpc/rpc-message-handler.js.map +1 -1
  71. package/build/lib/utils.d.ts +61 -0
  72. package/build/lib/utils.d.ts.map +1 -0
  73. package/build/lib/utils.js +241 -155
  74. package/build/lib/utils.js.map +1 -1
  75. package/lib/atoms.js +25 -4
  76. package/lib/mixins/connect.js +102 -7
  77. package/lib/mixins/execute.js +46 -13
  78. package/lib/mixins/message-handlers.js +44 -1
  79. package/lib/mixins/navigate.js +55 -3
  80. package/lib/remote-debugger.js +112 -0
  81. package/lib/rpc/rpc-client-real-device.js +1 -6
  82. package/lib/rpc/rpc-client-simulator.js +7 -1
  83. package/lib/rpc/rpc-client.js +106 -6
  84. package/lib/rpc/rpc-message-handler.js +1 -1
  85. package/lib/utils.js +31 -1
  86. package/package.json +25 -15
@@ -1 +1 @@
1
- {"version":3,"file":"remote-messages.js","names":["_lodash","_interopRequireDefault","require","_protocol","OBJECT_GROUP","MINIMAL_COMMAND","FULL_COMMAND","DIRECT_COMMAND","COMMANDS","RemoteMessages","constructor","isTargetBased","_isTargetBased","setConnectionKey","connId","__argument","WIRConnectionIdentifierKey","__selector","connectToApp","appIdKey","WIRApplicationIdentifierKey","setSenderKey","senderId","pageIdKey","WIRSenderKey","WIRPageIdentifierKey","WIRAutomaticallyPause","indicateWebView","enabled","WIRIndicateEnabledKey","_","isNil","launchApplication","bundleId","WIRApplicationBundleIdentifierKey","getFullCommand","opts","method","params","targetId","id","realMethod","realParams","message","JSON","stringify","Object","assign","objectGroup","includeCommandLineAPI","doNotPauseOnExceptionsAndMuteConsole","emulateUserGesture","generatePreview","saveResult","plist","WIRSocketDataKey","omitBy","getMinimalCommand","getDirectCommand","getRemoteCommand","command","builderFunction","getProtocolCommand","exports","_default","default"],"sources":["../../../lib/rpc/remote-messages.js"],"sourcesContent":["import _ from 'lodash';\nimport getProtocolCommand from '../protocol';\n\n\nconst OBJECT_GROUP = 'console';\n\nconst MINIMAL_COMMAND = 'getMinimalCommand';\nconst FULL_COMMAND = 'getFullCommand';\nconst DIRECT_COMMAND = 'getDirectCommand';\n\n// mapping of commands to the function for getting the command\n// defaults to `getMinimalCommand`, so no need to have those listed here\nconst COMMANDS = {\n 'Page.getCookies': FULL_COMMAND,\n 'Page.navigate': FULL_COMMAND,\n\n 'Runtime.awaitPromise': FULL_COMMAND,\n 'Runtime.callFunctionOn': FULL_COMMAND,\n 'Runtime.evaluate': FULL_COMMAND,\n\n 'Target.exists': DIRECT_COMMAND,\n\n 'Timeline.start': FULL_COMMAND,\n 'Timeline.stop': FULL_COMMAND,\n};\n\nclass RemoteMessages {\n constructor (isTargetBased = false) {\n this.isTargetBased = isTargetBased;\n }\n\n set isTargetBased (isTargetBased) {\n this._isTargetBased = isTargetBased;\n }\n\n get isTargetBased () {\n return this._isTargetBased;\n }\n\n /*\n * Connection functions\n */\n\n setConnectionKey (connId) {\n return {\n __argument: {\n WIRConnectionIdentifierKey: connId\n },\n __selector: '_rpc_reportIdentifier:'\n };\n }\n\n connectToApp (connId, appIdKey) {\n return {\n __argument: {\n WIRConnectionIdentifierKey: connId,\n WIRApplicationIdentifierKey: appIdKey\n },\n __selector: '_rpc_forwardGetListing:'\n };\n }\n\n setSenderKey (connId, senderId, appIdKey, pageIdKey) {\n return {\n __argument: {\n WIRApplicationIdentifierKey: appIdKey,\n WIRConnectionIdentifierKey: connId,\n WIRSenderKey: senderId,\n WIRPageIdentifierKey: pageIdKey,\n WIRAutomaticallyPause: false\n },\n __selector: '_rpc_forwardSocketSetup:'\n };\n }\n\n indicateWebView (connId, appIdKey, pageIdKey, enabled) {\n return {\n __argument: {\n WIRApplicationIdentifierKey: appIdKey,\n WIRIndicateEnabledKey: _.isNil(enabled) ? true : enabled,\n WIRConnectionIdentifierKey: connId,\n WIRPageIdentifierKey: pageIdKey\n },\n __selector: '_rpc_forwardIndicateWebView:'\n };\n }\n\n launchApplication (bundleId) {\n return {\n __argument: {\n WIRApplicationBundleIdentifierKey: bundleId\n },\n __selector: '_rpc_requestApplicationLaunch:'\n };\n }\n\n getFullCommand (opts = {}) {\n const {\n method,\n params,\n connId,\n senderId,\n appIdKey,\n pageIdKey,\n targetId,\n id,\n } = opts;\n\n /* The Web Inspector has a number of parameters that can be passed in, as\n * seen when dumping what Safari is doing when communicating with it. Most\n * are kept as they are set for Safari. The exception is `emulateUserGesture`\n * which, on iOS 13+, breaks popup blocking (i.e., even with the popup\n * blocking setting on, new windows are openable both from links and from\n * JavaScript).\n */\n\n let realMethod;\n let realParams;\n if (this.isTargetBased) {\n realMethod = 'Target.sendMessageToTarget';\n realParams = {\n targetId,\n message: JSON.stringify({\n id,\n method,\n params: Object.assign({\n objectGroup: OBJECT_GROUP,\n includeCommandLineAPI: true,\n doNotPauseOnExceptionsAndMuteConsole: false,\n emulateUserGesture: false,\n generatePreview: false,\n saveResult: false,\n }, params)\n }),\n };\n } else {\n realMethod = method;\n realParams = Object.assign({\n objectGroup: OBJECT_GROUP,\n includeCommandLineAPI: true,\n doNotPauseOnExceptionsAndMuteConsole: false,\n emulateUserGesture: false,\n }, params);\n }\n\n const plist = {\n __argument: {\n WIRSocketDataKey: {\n method: realMethod,\n params: realParams,\n },\n WIRConnectionIdentifierKey: connId,\n WIRSenderKey: senderId,\n WIRApplicationIdentifierKey: appIdKey,\n WIRPageIdentifierKey: pageIdKey,\n },\n __selector: '_rpc_forwardSocketData:',\n };\n return _.omitBy(plist, _.isNil);\n }\n\n getMinimalCommand (opts = {}) {\n const {method, params, connId, senderId, appIdKey, pageIdKey, targetId, id} = opts;\n\n let realMethod = method;\n let realParams = params;\n if (this.isTargetBased) {\n realMethod = 'Target.sendMessageToTarget';\n realParams = {\n targetId,\n message: JSON.stringify({\n id,\n method,\n params,\n }),\n };\n }\n\n const plist = {\n __argument: {\n WIRSocketDataKey: {\n method: realMethod,\n params: realParams,\n },\n WIRConnectionIdentifierKey: connId,\n WIRSenderKey: senderId,\n WIRApplicationIdentifierKey: appIdKey,\n WIRPageIdentifierKey: pageIdKey,\n },\n __selector: '_rpc_forwardSocketData:'\n };\n return _.omitBy(plist, _.isNil);\n }\n\n getDirectCommand (opts = {}) {\n const {method, params, connId, senderId, appIdKey, pageIdKey, id} = opts;\n\n const plist = {\n __argument: {\n WIRSocketDataKey: {\n id,\n method,\n params,\n },\n WIRConnectionIdentifierKey: connId,\n WIRSenderKey: senderId,\n WIRApplicationIdentifierKey: appIdKey,\n WIRPageIdentifierKey: pageIdKey,\n },\n __selector: '_rpc_forwardSocketData:'\n };\n return _.omitBy(plist, _.isNil);\n }\n\n getRemoteCommand (command, opts) {\n const {\n id,\n connId,\n appIdKey,\n senderId,\n pageIdKey,\n targetId,\n } = opts;\n\n // deal with Safari Web Inspector commands\n switch (command) {\n case 'setConnectionKey':\n return this.setConnectionKey(connId);\n case 'indicateWebView':\n return this.indicateWebView(connId, appIdKey, pageIdKey, opts.enabled);\n case 'connectToApp':\n return this.connectToApp(connId, appIdKey);\n case 'setSenderKey':\n return this.setSenderKey(connId, senderId, appIdKey, pageIdKey);\n case 'launchApplication':\n return this.launchApplication(opts.bundleId);\n }\n\n // deal with WebKit commands\n const builderFunction = COMMANDS[command] || MINIMAL_COMMAND;\n return this[builderFunction]({\n ...getProtocolCommand(id, command, opts),\n connId,\n appIdKey,\n senderId,\n pageIdKey,\n targetId,\n });\n }\n}\n\nexport { RemoteMessages };\nexport default RemoteMessages;\n"],"mappings":"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"}
1
+ {"version":3,"file":"remote-messages.js","sourceRoot":"","sources":["../../../lib/rpc/remote-messages.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export default class RpcClientRealDevice extends RpcClient {
2
+ service: any;
3
+ receive(data: any): Promise<void>;
4
+ }
5
+ import RpcClient from './rpc-client';
6
+ //# sourceMappingURL=rpc-client-real-device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-client-real-device.d.ts","sourceRoot":"","sources":["../../../lib/rpc/rpc-client-real-device.js"],"names":[],"mappings":"AAKA;IAQI,aAOE;IAqBJ,kCAMC;CACF;sBA/CqB,cAAc"}
@@ -1,54 +1,48 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- require("source-map-support/register");
9
- var _logger = _interopRequireDefault(require("../logger"));
10
- var _rpcClient = _interopRequireDefault(require("./rpc-client"));
11
- var _appiumIosDevice = require("appium-ios-device");
12
- class RpcClientRealDevice extends _rpcClient.default {
13
- constructor(opts = {}) {
14
- super(Object.assign({
15
- shouldCheckForTarget: false
16
- }, opts));
17
- const {
18
- udid
19
- } = opts;
20
- this.udid = udid;
21
- }
22
- async connect() {
23
- this.service = await _appiumIosDevice.services.startWebInspectorService(this.udid, {
24
- osVersion: this.platformVersion,
25
- isSimulator: false,
26
- verbose: this.logAllCommunication,
27
- verboseHexDump: this.logAllCommunicationHexDump,
28
- socketChunkSize: this.socketChunkSize,
29
- maxFrameLength: this.webInspectorMaxFrameLength
30
- });
31
- this.service.listenMessage(this.receive.bind(this));
32
- this.isConnected = true;
33
- }
34
- async disconnect() {
35
- if (!this.isConnected) {
36
- return;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const logger_1 = __importDefault(require("../logger"));
7
+ const rpc_client_1 = __importDefault(require("./rpc-client"));
8
+ const appium_ios_device_1 = require("appium-ios-device");
9
+ class RpcClientRealDevice extends rpc_client_1.default {
10
+ constructor(opts = {}) {
11
+ super(Object.assign({
12
+ shouldCheckForTarget: false,
13
+ }, opts));
37
14
  }
38
- _logger.default.debug('Disconnecting from remote debugger');
39
- await super.disconnect();
40
- this.service.close();
41
- this.isConnected = false;
42
- }
43
- async sendMessage(cmd) {
44
- this.service.sendMessage(cmd);
45
- }
46
- async receive(data) {
47
- if (!this.isConnected) {
48
- return;
15
+ async connect() {
16
+ this.service = await appium_ios_device_1.services.startWebInspectorService(this.udid, {
17
+ osVersion: this.platformVersion,
18
+ isSimulator: false,
19
+ verbose: this.logAllCommunication,
20
+ verboseHexDump: this.logAllCommunicationHexDump,
21
+ socketChunkSize: this.socketChunkSize,
22
+ maxFrameLength: this.webInspectorMaxFrameLength,
23
+ });
24
+ this.service.listenMessage(this.receive.bind(this));
25
+ this.isConnected = true;
26
+ }
27
+ async disconnect() {
28
+ if (!this.isConnected) {
29
+ return;
30
+ }
31
+ logger_1.default.debug('Disconnecting from remote debugger');
32
+ await super.disconnect();
33
+ this.service.close();
34
+ this.isConnected = false;
35
+ }
36
+ async sendMessage(cmd) {
37
+ this.service.sendMessage(cmd);
38
+ }
39
+ async receive(data) {
40
+ if (!this.isConnected) {
41
+ return;
42
+ }
43
+ // @ts-ignore messageHandler must be defined here
44
+ await this.messageHandler.handleMessage(data);
49
45
  }
50
- await this.messageHandler.handleMessage(data);
51
- }
52
46
  }
53
47
  exports.default = RpcClientRealDevice;
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcnBjQ2xpZW50IiwiX2FwcGl1bUlvc0RldmljZSIsIlJwY0NsaWVudFJlYWxEZXZpY2UiLCJScGNDbGllbnQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJzaG91bGRDaGVja0ZvclRhcmdldCIsInVkaWQiLCJjb25uZWN0Iiwic2VydmljZSIsInNlcnZpY2VzIiwic3RhcnRXZWJJbnNwZWN0b3JTZXJ2aWNlIiwib3NWZXJzaW9uIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNTaW11bGF0b3IiLCJ2ZXJib3NlIiwibG9nQWxsQ29tbXVuaWNhdGlvbiIsInZlcmJvc2VIZXhEdW1wIiwibG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAiLCJzb2NrZXRDaHVua1NpemUiLCJtYXhGcmFtZUxlbmd0aCIsIndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwibGlzdGVuTWVzc2FnZSIsInJlY2VpdmUiLCJiaW5kIiwiaXNDb25uZWN0ZWQiLCJkaXNjb25uZWN0IiwibG9nIiwiZGVidWciLCJjbG9zZSIsInNlbmRNZXNzYWdlIiwiY21kIiwiZGF0YSIsIm1lc3NhZ2VIYW5kbGVyIiwiaGFuZGxlTWVzc2FnZSIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9ycGMtY2xpZW50LXJlYWwtZGV2aWNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBScGNDbGllbnQgZnJvbSAnLi9ycGMtY2xpZW50JztcbmltcG9ydCB7IHNlcnZpY2VzIH0gZnJvbSAnYXBwaXVtLWlvcy1kZXZpY2UnO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJwY0NsaWVudFJlYWxEZXZpY2UgZXh0ZW5kcyBScGNDbGllbnQge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIoT2JqZWN0LmFzc2lnbih7XG4gICAgICBzaG91bGRDaGVja0ZvclRhcmdldDogZmFsc2UsXG4gICAgfSwgb3B0cykpO1xuXG4gICAgY29uc3Qge1xuICAgICAgdWRpZCxcbiAgICB9ID0gb3B0cztcblxuICAgIHRoaXMudWRpZCA9IHVkaWQ7XG4gIH1cblxuICBhc3luYyBjb25uZWN0ICgpIHtcbiAgICB0aGlzLnNlcnZpY2UgPSBhd2FpdCBzZXJ2aWNlcy5zdGFydFdlYkluc3BlY3RvclNlcnZpY2UodGhpcy51ZGlkLCB7XG4gICAgICBvc1ZlcnNpb246IHRoaXMucGxhdGZvcm1WZXJzaW9uLFxuICAgICAgaXNTaW11bGF0b3I6IGZhbHNlLFxuICAgICAgdmVyYm9zZTogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uLFxuICAgICAgdmVyYm9zZUhleER1bXA6IHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAsXG4gICAgICBzb2NrZXRDaHVua1NpemU6IHRoaXMuc29ja2V0Q2h1bmtTaXplLFxuICAgICAgbWF4RnJhbWVMZW5ndGg6IHRoaXMud2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNlcnZpY2UubGlzdGVuTWVzc2FnZSh0aGlzLnJlY2VpdmUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5pc0Nvbm5lY3RlZCA9IHRydWU7XG4gIH1cblxuICBhc3luYyBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAoIXRoaXMuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2cuZGVidWcoJ0Rpc2Nvbm5lY3RpbmcgZnJvbSByZW1vdGUgZGVidWdnZXInKTtcbiAgICBhd2FpdCBzdXBlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5zZXJ2aWNlLmNsb3NlKCk7XG4gICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UgKGNtZCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICB0aGlzLnNlcnZpY2Uuc2VuZE1lc3NhZ2UoY21kKTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmUgKGRhdGEpIHtcbiAgICBpZiAoIXRoaXMuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5tZXNzYWdlSGFuZGxlci5oYW5kbGVNZXNzYWdlKGRhdGEpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsZ0JBQUEsR0FBQUYsT0FBQTtBQUdlLE1BQU1HLG1CQUFtQixTQUFTQyxrQkFBUyxDQUFDO0VBQ3pEQyxXQUFXQSxDQUFFQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDdEIsS0FBSyxDQUFDQyxNQUFNLENBQUNDLE1BQU0sQ0FBQztNQUNsQkMsb0JBQW9CLEVBQUU7SUFDeEIsQ0FBQyxFQUFFSCxJQUFJLENBQUMsQ0FBQztJQUVULE1BQU07TUFDSkk7SUFDRixDQUFDLEdBQUdKLElBQUk7SUFFUixJQUFJLENBQUNJLElBQUksR0FBR0EsSUFBSTtFQUNsQjtFQUVBLE1BQU1DLE9BQU9BLENBQUEsRUFBSTtJQUNmLElBQUksQ0FBQ0MsT0FBTyxHQUFHLE1BQU1DLHlCQUFRLENBQUNDLHdCQUF3QixDQUFDLElBQUksQ0FBQ0osSUFBSSxFQUFFO01BQ2hFSyxTQUFTLEVBQUUsSUFBSSxDQUFDQyxlQUFlO01BQy9CQyxXQUFXLEVBQUUsS0FBSztNQUNsQkMsT0FBTyxFQUFFLElBQUksQ0FBQ0MsbUJBQW1CO01BQ2pDQyxjQUFjLEVBQUUsSUFBSSxDQUFDQywwQkFBMEI7TUFDL0NDLGVBQWUsRUFBRSxJQUFJLENBQUNBLGVBQWU7TUFDckNDLGNBQWMsRUFBRSxJQUFJLENBQUNDO0lBQ3ZCLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQ1osT0FBTyxDQUFDYSxhQUFhLENBQUMsSUFBSSxDQUFDQyxPQUFPLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUNDLFdBQVcsR0FBRyxJQUFJO0VBQ3pCO0VBRUEsTUFBTUMsVUFBVUEsQ0FBQSxFQUFJO0lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUNELFdBQVcsRUFBRTtNQUNyQjtJQUNGO0lBRUFFLGVBQUcsQ0FBQ0MsS0FBSyxDQUFDLG9DQUFvQyxDQUFDO0lBQy9DLE1BQU0sS0FBSyxDQUFDRixVQUFVLENBQUMsQ0FBQztJQUN4QixJQUFJLENBQUNqQixPQUFPLENBQUNvQixLQUFLLENBQUMsQ0FBQztJQUNwQixJQUFJLENBQUNKLFdBQVcsR0FBRyxLQUFLO0VBQzFCO0VBRUEsTUFBTUssV0FBV0EsQ0FBRUMsR0FBRyxFQUFFO0lBQ3RCLElBQUksQ0FBQ3RCLE9BQU8sQ0FBQ3FCLFdBQVcsQ0FBQ0MsR0FBRyxDQUFDO0VBQy9CO0VBRUEsTUFBTVIsT0FBT0EsQ0FBRVMsSUFBSSxFQUFFO0lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUNQLFdBQVcsRUFBRTtNQUNyQjtJQUNGO0lBQ0EsTUFBTSxJQUFJLENBQUNRLGNBQWMsQ0FBQ0MsYUFBYSxDQUFDRixJQUFJLENBQUM7RUFDL0M7QUFDRjtBQUFDRyxPQUFBLENBQUFDLE9BQUEsR0FBQXBDLG1CQUFBIn0=
48
+ //# sourceMappingURL=rpc-client-real-device.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client-real-device.js","names":["_logger","_interopRequireDefault","require","_rpcClient","_appiumIosDevice","RpcClientRealDevice","RpcClient","constructor","opts","Object","assign","shouldCheckForTarget","udid","connect","service","services","startWebInspectorService","osVersion","platformVersion","isSimulator","verbose","logAllCommunication","verboseHexDump","logAllCommunicationHexDump","socketChunkSize","maxFrameLength","webInspectorMaxFrameLength","listenMessage","receive","bind","isConnected","disconnect","log","debug","close","sendMessage","cmd","data","messageHandler","handleMessage","exports","default"],"sources":["../../../lib/rpc/rpc-client-real-device.js"],"sourcesContent":["import log from '../logger';\nimport RpcClient from './rpc-client';\nimport { services } from 'appium-ios-device';\n\n\nexport default class RpcClientRealDevice extends RpcClient {\n constructor (opts = {}) {\n super(Object.assign({\n shouldCheckForTarget: false,\n }, opts));\n\n const {\n udid,\n } = opts;\n\n this.udid = udid;\n }\n\n async connect () {\n this.service = await services.startWebInspectorService(this.udid, {\n osVersion: this.platformVersion,\n isSimulator: false,\n verbose: this.logAllCommunication,\n verboseHexDump: this.logAllCommunicationHexDump,\n socketChunkSize: this.socketChunkSize,\n maxFrameLength: this.webInspectorMaxFrameLength,\n });\n\n this.service.listenMessage(this.receive.bind(this));\n this.isConnected = true;\n }\n\n async disconnect () {\n if (!this.isConnected) {\n return;\n }\n\n log.debug('Disconnecting from remote debugger');\n await super.disconnect();\n this.service.close();\n this.isConnected = false;\n }\n\n async sendMessage (cmd) { // eslint-disable-line require-await\n this.service.sendMessage(cmd);\n }\n\n async receive (data) {\n if (!this.isConnected) {\n return;\n }\n await this.messageHandler.handleMessage(data);\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAGe,MAAMG,mBAAmB,SAASC,kBAAS,CAAC;EACzDC,WAAWA,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;IACtB,KAAK,CAACC,MAAM,CAACC,MAAM,CAAC;MAClBC,oBAAoB,EAAE;IACxB,CAAC,EAAEH,IAAI,CAAC,CAAC;IAET,MAAM;MACJI;IACF,CAAC,GAAGJ,IAAI;IAER,IAAI,CAACI,IAAI,GAAGA,IAAI;EAClB;EAEA,MAAMC,OAAOA,CAAA,EAAI;IACf,IAAI,CAACC,OAAO,GAAG,MAAMC,yBAAQ,CAACC,wBAAwB,CAAC,IAAI,CAACJ,IAAI,EAAE;MAChEK,SAAS,EAAE,IAAI,CAACC,eAAe;MAC/BC,WAAW,EAAE,KAAK;MAClBC,OAAO,EAAE,IAAI,CAACC,mBAAmB;MACjCC,cAAc,EAAE,IAAI,CAACC,0BAA0B;MAC/CC,eAAe,EAAE,IAAI,CAACA,eAAe;MACrCC,cAAc,EAAE,IAAI,CAACC;IACvB,CAAC,CAAC;IAEF,IAAI,CAACZ,OAAO,CAACa,aAAa,CAAC,IAAI,CAACC,OAAO,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAACC,WAAW,GAAG,IAAI;EACzB;EAEA,MAAMC,UAAUA,CAAA,EAAI;IAClB,IAAI,CAAC,IAAI,CAACD,WAAW,EAAE;MACrB;IACF;IAEAE,eAAG,CAACC,KAAK,CAAC,oCAAoC,CAAC;IAC/C,MAAM,KAAK,CAACF,UAAU,CAAC,CAAC;IACxB,IAAI,CAACjB,OAAO,CAACoB,KAAK,CAAC,CAAC;IACpB,IAAI,CAACJ,WAAW,GAAG,KAAK;EAC1B;EAEA,MAAMK,WAAWA,CAAEC,GAAG,EAAE;IACtB,IAAI,CAACtB,OAAO,CAACqB,WAAW,CAACC,GAAG,CAAC;EAC/B;EAEA,MAAMR,OAAOA,CAAES,IAAI,EAAE;IACnB,IAAI,CAAC,IAAI,CAACP,WAAW,EAAE;MACrB;IACF;IACA,MAAM,IAAI,CAACQ,cAAc,CAACC,aAAa,CAACF,IAAI,CAAC;EAC/C;AACF;AAACG,OAAA,CAAAC,OAAA,GAAApC,mBAAA"}
1
+ {"version":3,"file":"rpc-client-real-device.js","sourceRoot":"","sources":["../../../lib/rpc/rpc-client-real-device.js"],"names":[],"mappings":";;;;;AAAA,uDAA4B;AAC5B,8DAAqC;AACrC,yDAA6C;AAG7C,MAAqB,mBAAoB,SAAQ,oBAAS;IACxD,YAAa,IAAI,GAAG,EAAE;QACpB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAClB,oBAAoB,EAAE,KAAK;SAC5B,EAAE,IAAI,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,OAAO,GAAG,MAAM,4BAAQ,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE;YAChE,SAAS,EAAE,IAAI,CAAC,eAAe;YAC/B,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,IAAI,CAAC,mBAAmB;YACjC,cAAc,EAAE,IAAI,CAAC,0BAA0B;YAC/C,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,0BAA0B;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QAED,gBAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW,CAAE,GAAG;QACpB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,OAAO,CAAE,IAAI;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QACD,iDAAiD;QACjD,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AA3CD,sCA2CC"}
@@ -0,0 +1,15 @@
1
+ /// <reference types="node" />
2
+ export default class RpcClientSimulator extends RpcClient {
3
+ host: any;
4
+ port: any;
5
+ messageProxy: any;
6
+ socket: net.Socket | null;
7
+ socketPath: any;
8
+ connect(): Promise<any>;
9
+ service: any;
10
+ sendMessage(cmd: any): Promise<any>;
11
+ receive(data: any): Promise<void>;
12
+ }
13
+ import RpcClient from './rpc-client';
14
+ import net from 'net';
15
+ //# sourceMappingURL=rpc-client-simulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-client-simulator.d.ts","sourceRoot":"","sources":["../../../lib/rpc/rpc-client-simulator.js"],"names":[],"mappings":";AAQA;IAcI,UAAgB;IAChB,UAAgB;IAChB,kBAAgC;IAEhC,0BAAkB;IAClB,gBAA4B;IAG9B,wBA6EC;IA/BC,aAOE;IAqCJ,oCAwBC;IAED,kCAgBC;CACF;sBA/JqB,cAAc;gBADpB,KAAK"}
@@ -1,134 +1,147 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- require("source-map-support/register");
9
- var _logger = _interopRequireDefault(require("../logger"));
10
- var _lodash = _interopRequireDefault(require("lodash"));
11
- var _bluebird = _interopRequireDefault(require("bluebird"));
12
- var _net = _interopRequireDefault(require("net"));
13
- var _rpcClient = _interopRequireDefault(require("./rpc-client"));
14
- var _appiumIosDevice = require("appium-ios-device");
15
- class RpcClientSimulator extends _rpcClient.default {
16
- constructor(opts = {}) {
17
- super(Object.assign({
18
- shouldCheckForTarget: false
19
- }, opts));
20
- const {
21
- socketPath,
22
- host = '::1',
23
- port,
24
- messageProxy
25
- } = opts;
26
- this.host = host;
27
- this.port = port;
28
- this.messageProxy = messageProxy;
29
- this.socket = null;
30
- this.socketPath = socketPath;
31
- }
32
- async connect() {
33
- if (this.socketPath) {
34
- if (this.messageProxy) {
35
- _logger.default.debug(`Connecting to remote debugger via proxy through unix domain socket: '${this.messageProxy}'`);
36
- this.socket = _net.default.connect(this.messageProxy);
37
- this.socket.once('connect', () => {
38
- _logger.default.debug(`Forwarding the actual web inspector socket to the proxy: '${this.socketPath}'`);
39
- this.socket.write(JSON.stringify({
40
- socketPath: this.socketPath
41
- }));
42
- });
43
- } else {
44
- _logger.default.debug(`Connecting to remote debugger through unix domain socket: '${this.socketPath}'`);
45
- this.socket = _net.default.connect(this.socketPath);
46
- }
47
- } else {
48
- if (this.messageProxy) {
49
- this.port = this.messageProxy;
50
- }
51
- _logger.default.debug(`Connecting to remote debugger ${this.messageProxy ? 'via proxy ' : ''}through TCP: ${this.host}:${this.port}`);
52
- this.socket = new _net.default.Socket({
53
- type: 'tcp6'
54
- });
55
- this.socket.connect(this.port, this.host);
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const logger_1 = __importDefault(require("../logger"));
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const bluebird_1 = __importDefault(require("bluebird"));
9
+ const net_1 = __importDefault(require("net"));
10
+ const rpc_client_1 = __importDefault(require("./rpc-client"));
11
+ const appium_ios_device_1 = require("appium-ios-device");
12
+ class RpcClientSimulator extends rpc_client_1.default {
13
+ constructor(opts = {}) {
14
+ super(Object.assign({
15
+ shouldCheckForTarget: false,
16
+ }, opts));
17
+ const { socketPath, host = '::1', port, messageProxy, } = opts;
18
+ // host/port config for TCP communication, socketPath for unix domain sockets
19
+ this.host = host;
20
+ this.port = port;
21
+ this.messageProxy = messageProxy;
22
+ this.socket = null;
23
+ this.socketPath = socketPath;
56
24
  }
57
- this.socket.setNoDelay(true);
58
- this.socket.setKeepAlive(true);
59
- this.socket.on('close', () => {
60
- if (this.isConnected) {
61
- _logger.default.debug('Debugger socket disconnected');
62
- }
63
- this.isConnected = false;
64
- this.socket = null;
65
- });
66
- this.socket.on('end', () => {
67
- this.isConnected = false;
68
- });
69
- this.service = await _appiumIosDevice.services.startWebInspectorService(this.udid, {
70
- socket: this.socket,
71
- isSimulator: true,
72
- osVersion: this.platformVersion,
73
- verbose: this.logAllCommunication,
74
- verboseHexDump: this.logAllCommunicationHexDump,
75
- maxFrameLength: this.webInspectorMaxFrameLength
76
- });
77
- this.service.listenMessage(this.receive.bind(this));
78
- return await new _bluebird.default((resolve, reject) => {
79
- this.socket.on('connect', () => {
80
- _logger.default.debug(`Debugger socket connected`);
81
- this.isConnected = true;
82
- resolve();
83
- });
84
- this.socket.on('error', err => {
85
- if (this.isConnected) {
86
- _logger.default.error(`Socket error: ${err.message}`);
87
- this.isConnected = false;
25
+ async connect() {
26
+ // create socket and handle its messages
27
+ if (this.socketPath) {
28
+ if (this.messageProxy) {
29
+ // unix domain socket via proxy
30
+ logger_1.default.debug(`Connecting to remote debugger via proxy through unix domain socket: '${this.messageProxy}'`);
31
+ this.socket = net_1.default.connect(this.messageProxy);
32
+ // Forward the actual socketPath to the proxy
33
+ this.socket.once('connect', () => {
34
+ logger_1.default.debug(`Forwarding the actual web inspector socket to the proxy: '${this.socketPath}'`);
35
+ // @ts-ignore socket must be efined here
36
+ this.socket.write(JSON.stringify({
37
+ socketPath: this.socketPath
38
+ }));
39
+ });
40
+ }
41
+ else {
42
+ // unix domain socket
43
+ logger_1.default.debug(`Connecting to remote debugger through unix domain socket: '${this.socketPath}'`);
44
+ this.socket = net_1.default.connect(this.socketPath);
45
+ }
46
+ }
47
+ else {
48
+ if (this.messageProxy) {
49
+ // connect to the proxy instead of the remote debugger directly
50
+ this.port = this.messageProxy;
51
+ }
52
+ // tcp socket
53
+ logger_1.default.debug(`Connecting to remote debugger ${this.messageProxy ? 'via proxy ' : ''}through TCP: ${this.host}:${this.port}`);
54
+ this.socket = new net_1.default.Socket();
55
+ this.socket.connect(this.port, this.host);
88
56
  }
89
- reject(err);
90
- });
91
- });
92
- }
93
- async disconnect() {
94
- if (!this.isConnected) {
95
- return;
57
+ this.socket.setNoDelay(true);
58
+ this.socket.setKeepAlive(true);
59
+ this.socket.on('close', () => {
60
+ if (this.isConnected) {
61
+ logger_1.default.debug('Debugger socket disconnected');
62
+ }
63
+ this.isConnected = false;
64
+ this.socket = null;
65
+ });
66
+ this.socket.on('end', () => {
67
+ this.isConnected = false;
68
+ });
69
+ this.service = await appium_ios_device_1.services.startWebInspectorService(this.udid, {
70
+ socket: this.socket,
71
+ isSimulator: true,
72
+ osVersion: this.platformVersion,
73
+ verbose: this.logAllCommunication,
74
+ verboseHexDump: this.logAllCommunicationHexDump,
75
+ maxFrameLength: this.webInspectorMaxFrameLength,
76
+ });
77
+ this.service.listenMessage(this.receive.bind(this));
78
+ // connect the socket
79
+ return await new bluebird_1.default((resolve, reject) => {
80
+ // only resolve this function when we are actually connected
81
+ // @ts-ignore socket must be defined here
82
+ this.socket.on('connect', () => {
83
+ logger_1.default.debug(`Debugger socket connected`);
84
+ this.isConnected = true;
85
+ resolve();
86
+ });
87
+ // @ts-ignore socket must be defined here
88
+ this.socket.on('error', (err) => {
89
+ if (this.isConnected) {
90
+ logger_1.default.error(`Socket error: ${err.message}`);
91
+ this.isConnected = false;
92
+ }
93
+ // the connection was refused, so reject the connect promise
94
+ reject(err);
95
+ });
96
+ });
96
97
  }
97
- _logger.default.debug('Disconnecting from remote debugger');
98
- await super.disconnect();
99
- this.service.close();
100
- this.isConnected = false;
101
- }
102
- async sendMessage(cmd) {
103
- let onSocketError;
104
- return await new _bluebird.default((resolve, reject) => {
105
- onSocketError = err => {
106
- _logger.default.error(`Socket error: ${err.message}`);
107
- reject(err);
108
- };
109
- this.socket.on('error', onSocketError);
110
- this.service.sendMessage(cmd);
111
- resolve();
112
- }).finally(() => {
113
- try {
114
- this.socket.removeListener('error', onSocketError);
115
- } catch (ign) {}
116
- });
117
- }
118
- async receive(data) {
119
- if (!this.isConnected) {
120
- return;
98
+ async disconnect() {
99
+ if (!this.isConnected) {
100
+ return;
101
+ }
102
+ logger_1.default.debug('Disconnecting from remote debugger');
103
+ await super.disconnect();
104
+ this.service.close();
105
+ this.isConnected = false;
121
106
  }
122
- if (!data) {
123
- return;
107
+ async sendMessage(cmd) {
108
+ let onSocketError;
109
+ return await new bluebird_1.default((resolve, reject) => {
110
+ // handle socket problems
111
+ onSocketError = (err) => {
112
+ logger_1.default.error(`Socket error: ${err.message}`);
113
+ // the connection was refused, so reject the connect promise
114
+ reject(err);
115
+ };
116
+ // @ts-ignore socket must be defined
117
+ this.socket.on('error', onSocketError);
118
+ this.service.sendMessage(cmd);
119
+ resolve();
120
+ })
121
+ .finally(() => {
122
+ // remove this listener, so we don't exhaust the system
123
+ try {
124
+ // @ts-ignore socket must be defined
125
+ this.socket.removeListener('error', onSocketError);
126
+ }
127
+ catch (ign) { }
128
+ });
124
129
  }
125
- for (const key of ['WIRMessageDataKey', 'WIRDestinationKey', 'WIRSocketDataKey']) {
126
- if (!_lodash.default.isUndefined(data[key])) {
127
- data[key] = data[key].toString('utf8');
128
- }
130
+ async receive(data) {
131
+ if (!this.isConnected) {
132
+ return;
133
+ }
134
+ if (!data) {
135
+ return;
136
+ }
137
+ for (const key of ['WIRMessageDataKey', 'WIRDestinationKey', 'WIRSocketDataKey']) {
138
+ if (!lodash_1.default.isUndefined(data[key])) {
139
+ data[key] = data[key].toString('utf8');
140
+ }
141
+ }
142
+ // @ts-ignore messageHandler must be defined
143
+ await this.messageHandler.handleMessage(data);
129
144
  }
130
- await this.messageHandler.handleMessage(data);
131
- }
132
145
  }
133
146
  exports.default = RpcClientSimulator;
134
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2JsdWViaXJkIiwiX25ldCIsIl9ycGNDbGllbnQiLCJfYXBwaXVtSW9zRGV2aWNlIiwiUnBjQ2xpZW50U2ltdWxhdG9yIiwiUnBjQ2xpZW50IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwic2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJzb2NrZXRQYXRoIiwiaG9zdCIsInBvcnQiLCJtZXNzYWdlUHJveHkiLCJzb2NrZXQiLCJjb25uZWN0IiwibG9nIiwiZGVidWciLCJuZXQiLCJvbmNlIiwid3JpdGUiLCJKU09OIiwic3RyaW5naWZ5IiwiU29ja2V0IiwidHlwZSIsInNldE5vRGVsYXkiLCJzZXRLZWVwQWxpdmUiLCJvbiIsImlzQ29ubmVjdGVkIiwic2VydmljZSIsInNlcnZpY2VzIiwic3RhcnRXZWJJbnNwZWN0b3JTZXJ2aWNlIiwidWRpZCIsImlzU2ltdWxhdG9yIiwib3NWZXJzaW9uIiwicGxhdGZvcm1WZXJzaW9uIiwidmVyYm9zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJ2ZXJib3NlSGV4RHVtcCIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwibWF4RnJhbWVMZW5ndGgiLCJ3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCIsImxpc3Rlbk1lc3NhZ2UiLCJyZWNlaXZlIiwiYmluZCIsIkIiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXJyIiwiZXJyb3IiLCJtZXNzYWdlIiwiZGlzY29ubmVjdCIsImNsb3NlIiwic2VuZE1lc3NhZ2UiLCJjbWQiLCJvblNvY2tldEVycm9yIiwiZmluYWxseSIsInJlbW92ZUxpc3RlbmVyIiwiaWduIiwiZGF0YSIsImtleSIsIl8iLCJpc1VuZGVmaW5lZCIsInRvU3RyaW5nIiwibWVzc2FnZUhhbmRsZXIiLCJoYW5kbGVNZXNzYWdlIiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvcnBjL3JwYy1jbGllbnQtc2ltdWxhdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgUnBjQ2xpZW50IGZyb20gJy4vcnBjLWNsaWVudCc7XG5pbXBvcnQgeyBzZXJ2aWNlcyB9IGZyb20gJ2FwcGl1bS1pb3MtZGV2aWNlJztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBScGNDbGllbnRTaW11bGF0b3IgZXh0ZW5kcyBScGNDbGllbnQge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIoT2JqZWN0LmFzc2lnbih7XG4gICAgICBzaG91bGRDaGVja0ZvclRhcmdldDogZmFsc2UsXG4gICAgfSwgb3B0cykpO1xuXG4gICAgY29uc3Qge1xuICAgICAgc29ja2V0UGF0aCxcbiAgICAgIGhvc3QgPSAnOjoxJyxcbiAgICAgIHBvcnQsXG4gICAgICBtZXNzYWdlUHJveHksXG4gICAgfSA9IG9wdHM7XG5cbiAgICAvLyBob3N0L3BvcnQgY29uZmlnIGZvciBUQ1AgY29tbXVuaWNhdGlvbiwgc29ja2V0UGF0aCBmb3IgdW5peCBkb21haW4gc29ja2V0c1xuICAgIHRoaXMuaG9zdCA9IGhvc3Q7XG4gICAgdGhpcy5wb3J0ID0gcG9ydDtcbiAgICB0aGlzLm1lc3NhZ2VQcm94eSA9IG1lc3NhZ2VQcm94eTtcblxuICAgIHRoaXMuc29ja2V0ID0gbnVsbDtcbiAgICB0aGlzLnNvY2tldFBhdGggPSBzb2NrZXRQYXRoO1xuICB9XG5cbiAgYXN5bmMgY29ubmVjdCAoKSB7XG4gICAgLy8gY3JlYXRlIHNvY2tldCBhbmQgaGFuZGxlIGl0cyBtZXNzYWdlc1xuICAgIGlmICh0aGlzLnNvY2tldFBhdGgpIHtcbiAgICAgIGlmICh0aGlzLm1lc3NhZ2VQcm94eSkge1xuICAgICAgICAvLyB1bml4IGRvbWFpbiBzb2NrZXQgdmlhIHByb3h5XG4gICAgICAgIGxvZy5kZWJ1ZyhgQ29ubmVjdGluZyB0byByZW1vdGUgZGVidWdnZXIgdmlhIHByb3h5IHRocm91Z2ggdW5peCBkb21haW4gc29ja2V0OiAnJHt0aGlzLm1lc3NhZ2VQcm94eX0nYCk7XG4gICAgICAgIHRoaXMuc29ja2V0ID0gbmV0LmNvbm5lY3QodGhpcy5tZXNzYWdlUHJveHkpO1xuXG4gICAgICAgIC8vIEZvcndhcmQgdGhlIGFjdHVhbCBzb2NrZXRQYXRoIHRvIHRoZSBwcm94eVxuICAgICAgICB0aGlzLnNvY2tldC5vbmNlKCdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgRm9yd2FyZGluZyB0aGUgYWN0dWFsIHdlYiBpbnNwZWN0b3Igc29ja2V0IHRvIHRoZSBwcm94eTogJyR7dGhpcy5zb2NrZXRQYXRofSdgKTtcbiAgICAgICAgICB0aGlzLnNvY2tldC53cml0ZShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBzb2NrZXRQYXRoOiB0aGlzLnNvY2tldFBhdGhcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB1bml4IGRvbWFpbiBzb2NrZXRcbiAgICAgICAgbG9nLmRlYnVnKGBDb25uZWN0aW5nIHRvIHJlbW90ZSBkZWJ1Z2dlciB0aHJvdWdoIHVuaXggZG9tYWluIHNvY2tldDogJyR7dGhpcy5zb2NrZXRQYXRofSdgKTtcbiAgICAgICAgdGhpcy5zb2NrZXQgPSBuZXQuY29ubmVjdCh0aGlzLnNvY2tldFBhdGgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5tZXNzYWdlUHJveHkpIHtcbiAgICAgICAgLy8gY29ubmVjdCB0byB0aGUgcHJveHkgaW5zdGVhZCBvZiB0aGUgcmVtb3RlIGRlYnVnZ2VyIGRpcmVjdGx5XG4gICAgICAgIHRoaXMucG9ydCA9IHRoaXMubWVzc2FnZVByb3h5O1xuICAgICAgfVxuXG4gICAgICAvLyB0Y3Agc29ja2V0XG4gICAgICBsb2cuZGVidWcoYENvbm5lY3RpbmcgdG8gcmVtb3RlIGRlYnVnZ2VyICR7dGhpcy5tZXNzYWdlUHJveHkgPyAndmlhIHByb3h5ICcgOiAnJ310aHJvdWdoIFRDUDogJHt0aGlzLmhvc3R9OiR7dGhpcy5wb3J0fWApO1xuICAgICAgdGhpcy5zb2NrZXQgPSBuZXcgbmV0LlNvY2tldCh7dHlwZTogJ3RjcDYnfSk7XG4gICAgICB0aGlzLnNvY2tldC5jb25uZWN0KHRoaXMucG9ydCwgdGhpcy5ob3N0KTtcbiAgICB9XG5cbiAgICB0aGlzLnNvY2tldC5zZXROb0RlbGF5KHRydWUpO1xuICAgIHRoaXMuc29ja2V0LnNldEtlZXBBbGl2ZSh0cnVlKTtcbiAgICB0aGlzLnNvY2tldC5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBsb2cuZGVidWcoJ0RlYnVnZ2VyIHNvY2tldCBkaXNjb25uZWN0ZWQnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc29ja2V0ID0gbnVsbDtcbiAgICB9KTtcbiAgICB0aGlzLnNvY2tldC5vbignZW5kJywgKCkgPT4ge1xuICAgICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZSA9IGF3YWl0IHNlcnZpY2VzLnN0YXJ0V2ViSW5zcGVjdG9yU2VydmljZSh0aGlzLnVkaWQsIHtcbiAgICAgIHNvY2tldDogdGhpcy5zb2NrZXQsXG4gICAgICBpc1NpbXVsYXRvcjogdHJ1ZSxcbiAgICAgIG9zVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICB2ZXJib3NlOiB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24sXG4gICAgICB2ZXJib3NlSGV4RHVtcDogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCxcbiAgICAgIG1heEZyYW1lTGVuZ3RoOiB0aGlzLndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZS5saXN0ZW5NZXNzYWdlKHRoaXMucmVjZWl2ZS5iaW5kKHRoaXMpKTtcblxuICAgIC8vIGNvbm5lY3QgdGhlIHNvY2tldFxuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBvbmx5IHJlc29sdmUgdGhpcyBmdW5jdGlvbiB3aGVuIHdlIGFyZSBhY3R1YWxseSBjb25uZWN0ZWRcbiAgICAgIHRoaXMuc29ja2V0Lm9uKCdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICBsb2cuZGVidWcoYERlYnVnZ2VyIHNvY2tldCBjb25uZWN0ZWRgKTtcbiAgICAgICAgdGhpcy5pc0Nvbm5lY3RlZCA9IHRydWU7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNvY2tldC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzQ29ubmVjdGVkKSB7XG4gICAgICAgICAgbG9nLmVycm9yKGBTb2NrZXQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdGhlIGNvbm5lY3Rpb24gd2FzIHJlZnVzZWQsIHNvIHJlamVjdCB0aGUgY29ubmVjdCBwcm9taXNlXG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAoIXRoaXMuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2cuZGVidWcoJ0Rpc2Nvbm5lY3RpbmcgZnJvbSByZW1vdGUgZGVidWdnZXInKTtcbiAgICBhd2FpdCBzdXBlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5zZXJ2aWNlLmNsb3NlKCk7XG4gICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UgKGNtZCkge1xuICAgIGxldCBvblNvY2tldEVycm9yO1xuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIGhhbmRsZSBzb2NrZXQgcHJvYmxlbXNcbiAgICAgIG9uU29ja2V0RXJyb3IgPSAoZXJyKSA9PiB7XG4gICAgICAgIGxvZy5lcnJvcihgU29ja2V0IGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuXG4gICAgICAgIC8vIHRoZSBjb25uZWN0aW9uIHdhcyByZWZ1c2VkLCBzbyByZWplY3QgdGhlIGNvbm5lY3QgcHJvbWlzZVxuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc29ja2V0Lm9uKCdlcnJvcicsIG9uU29ja2V0RXJyb3IpO1xuICAgICAgdGhpcy5zZXJ2aWNlLnNlbmRNZXNzYWdlKGNtZCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSlcbiAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAvLyByZW1vdmUgdGhpcyBsaXN0ZW5lciwgc28gd2UgZG9uJ3QgZXhoYXVzdCB0aGUgc3lzdGVtXG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLnNvY2tldC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvblNvY2tldEVycm9yKTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmUgKGRhdGEpIHtcbiAgICBpZiAoIXRoaXMuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBbJ1dJUk1lc3NhZ2VEYXRhS2V5JywgJ1dJUkRlc3RpbmF0aW9uS2V5JywgJ1dJUlNvY2tldERhdGFLZXknXSkge1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGRhdGFba2V5XSkpIHtcbiAgICAgICAgZGF0YVtrZXldID0gZGF0YVtrZXldLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIGF3YWl0IHRoaXMubWVzc2FnZUhhbmRsZXIuaGFuZGxlTWVzc2FnZShkYXRhKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLElBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLGdCQUFBLEdBQUFMLE9BQUE7QUFHZSxNQUFNTSxrQkFBa0IsU0FBU0Msa0JBQVMsQ0FBQztFQUN4REMsV0FBV0EsQ0FBRUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ3RCLEtBQUssQ0FBQ0MsTUFBTSxDQUFDQyxNQUFNLENBQUM7TUFDbEJDLG9CQUFvQixFQUFFO0lBQ3hCLENBQUMsRUFBRUgsSUFBSSxDQUFDLENBQUM7SUFFVCxNQUFNO01BQ0pJLFVBQVU7TUFDVkMsSUFBSSxHQUFHLEtBQUs7TUFDWkMsSUFBSTtNQUNKQztJQUNGLENBQUMsR0FBR1AsSUFBSTtJQUdSLElBQUksQ0FBQ0ssSUFBSSxHQUFHQSxJQUFJO0lBQ2hCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQSxJQUFJO0lBQ2hCLElBQUksQ0FBQ0MsWUFBWSxHQUFHQSxZQUFZO0lBRWhDLElBQUksQ0FBQ0MsTUFBTSxHQUFHLElBQUk7SUFDbEIsSUFBSSxDQUFDSixVQUFVLEdBQUdBLFVBQVU7RUFDOUI7RUFFQSxNQUFNSyxPQUFPQSxDQUFBLEVBQUk7SUFFZixJQUFJLElBQUksQ0FBQ0wsVUFBVSxFQUFFO01BQ25CLElBQUksSUFBSSxDQUFDRyxZQUFZ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
147
+ //# sourceMappingURL=rpc-client-simulator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client-simulator.js","names":["_logger","_interopRequireDefault","require","_lodash","_bluebird","_net","_rpcClient","_appiumIosDevice","RpcClientSimulator","RpcClient","constructor","opts","Object","assign","shouldCheckForTarget","socketPath","host","port","messageProxy","socket","connect","log","debug","net","once","write","JSON","stringify","Socket","type","setNoDelay","setKeepAlive","on","isConnected","service","services","startWebInspectorService","udid","isSimulator","osVersion","platformVersion","verbose","logAllCommunication","verboseHexDump","logAllCommunicationHexDump","maxFrameLength","webInspectorMaxFrameLength","listenMessage","receive","bind","B","resolve","reject","err","error","message","disconnect","close","sendMessage","cmd","onSocketError","finally","removeListener","ign","data","key","_","isUndefined","toString","messageHandler","handleMessage","exports","default"],"sources":["../../../lib/rpc/rpc-client-simulator.js"],"sourcesContent":["import log from '../logger';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport net from 'net';\nimport RpcClient from './rpc-client';\nimport { services } from 'appium-ios-device';\n\n\nexport default class RpcClientSimulator extends RpcClient {\n constructor (opts = {}) {\n super(Object.assign({\n shouldCheckForTarget: false,\n }, opts));\n\n const {\n socketPath,\n host = '::1',\n port,\n messageProxy,\n } = opts;\n\n // host/port config for TCP communication, socketPath for unix domain sockets\n this.host = host;\n this.port = port;\n this.messageProxy = messageProxy;\n\n this.socket = null;\n this.socketPath = socketPath;\n }\n\n async connect () {\n // create socket and handle its messages\n if (this.socketPath) {\n if (this.messageProxy) {\n // unix domain socket via proxy\n log.debug(`Connecting to remote debugger via proxy through unix domain socket: '${this.messageProxy}'`);\n this.socket = net.connect(this.messageProxy);\n\n // Forward the actual socketPath to the proxy\n this.socket.once('connect', () => {\n log.debug(`Forwarding the actual web inspector socket to the proxy: '${this.socketPath}'`);\n this.socket.write(JSON.stringify({\n socketPath: this.socketPath\n }));\n });\n\n } else {\n // unix domain socket\n log.debug(`Connecting to remote debugger through unix domain socket: '${this.socketPath}'`);\n this.socket = net.connect(this.socketPath);\n }\n } else {\n if (this.messageProxy) {\n // connect to the proxy instead of the remote debugger directly\n this.port = this.messageProxy;\n }\n\n // tcp socket\n log.debug(`Connecting to remote debugger ${this.messageProxy ? 'via proxy ' : ''}through TCP: ${this.host}:${this.port}`);\n this.socket = new net.Socket({type: 'tcp6'});\n this.socket.connect(this.port, this.host);\n }\n\n this.socket.setNoDelay(true);\n this.socket.setKeepAlive(true);\n this.socket.on('close', () => {\n if (this.isConnected) {\n log.debug('Debugger socket disconnected');\n }\n this.isConnected = false;\n this.socket = null;\n });\n this.socket.on('end', () => {\n this.isConnected = false;\n });\n this.service = await services.startWebInspectorService(this.udid, {\n socket: this.socket,\n isSimulator: true,\n osVersion: this.platformVersion,\n verbose: this.logAllCommunication,\n verboseHexDump: this.logAllCommunicationHexDump,\n maxFrameLength: this.webInspectorMaxFrameLength,\n });\n this.service.listenMessage(this.receive.bind(this));\n\n // connect the socket\n return await new B((resolve, reject) => {\n // only resolve this function when we are actually connected\n this.socket.on('connect', () => {\n log.debug(`Debugger socket connected`);\n this.isConnected = true;\n\n resolve();\n });\n this.socket.on('error', (err) => {\n if (this.isConnected) {\n log.error(`Socket error: ${err.message}`);\n this.isConnected = false;\n }\n\n // the connection was refused, so reject the connect promise\n reject(err);\n });\n });\n }\n\n async disconnect () {\n if (!this.isConnected) {\n return;\n }\n\n log.debug('Disconnecting from remote debugger');\n await super.disconnect();\n this.service.close();\n this.isConnected = false;\n }\n\n async sendMessage (cmd) {\n let onSocketError;\n\n return await new B((resolve, reject) => {\n // handle socket problems\n onSocketError = (err) => {\n log.error(`Socket error: ${err.message}`);\n\n // the connection was refused, so reject the connect promise\n reject(err);\n };\n\n this.socket.on('error', onSocketError);\n this.service.sendMessage(cmd);\n resolve();\n })\n .finally(() => {\n // remove this listener, so we don't exhaust the system\n try {\n this.socket.removeListener('error', onSocketError);\n } catch (ign) {}\n });\n }\n\n async receive (data) {\n if (!this.isConnected) {\n return;\n }\n\n if (!data) {\n return;\n }\n\n for (const key of ['WIRMessageDataKey', 'WIRDestinationKey', 'WIRSocketDataKey']) {\n if (!_.isUndefined(data[key])) {\n data[key] = data[key].toString('utf8');\n }\n }\n await this.messageHandler.handleMessage(data);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rpc-client-simulator.js","sourceRoot":"","sources":["../../../lib/rpc/rpc-client-simulator.js"],"names":[],"mappings":";;;;;AAAA,uDAA4B;AAC5B,oDAAuB;AACvB,wDAAyB;AACzB,8CAAsB;AACtB,8DAAqC;AACrC,yDAA6C;AAG7C,MAAqB,kBAAmB,SAAQ,oBAAS;IACvD,YAAa,IAAI,GAAG,EAAE;QACpB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAClB,oBAAoB,EAAE,KAAK;SAC5B,EAAE,IAAI,CAAC,CAAC,CAAC;QAEV,MAAM,EACJ,UAAU,EACV,IAAI,GAAG,KAAK,EACZ,IAAI,EACJ,YAAY,GACb,GAAG,IAAI,CAAC;QAET,6EAA6E;QAC7E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,wCAAwC;QACxC,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,+BAA+B;gBAC/B,gBAAG,CAAC,KAAK,CAAC,wEAAwE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBACxG,IAAI,CAAC,MAAM,GAAG,aAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE7C,6CAA6C;gBAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;oBAC/B,gBAAG,CAAC,KAAK,CAAC,6DAA6D,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;oBAC3F,wCAAwC;oBACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;wBAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B,CAAC,CAAC,CAAC;gBACN,CAAC,CAAC,CAAC;aAEJ;iBAAM;gBACL,qBAAqB;gBACrB,gBAAG,CAAC,KAAK,CAAC,8DAA8D,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBAC5F,IAAI,CAAC,MAAM,GAAG,aAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC5C;SACF;aAAM;YACL,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,+DAA+D;gBAC/D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;aAC/B;YAED,aAAa;YACb,gBAAG,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,gBAAgB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1H,IAAI,CAAC,MAAM,GAAG,IAAI,aAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,gBAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;aAC3C;YACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,MAAM,4BAAQ,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE;YAChE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI,CAAC,eAAe;YAC/B,OAAO,EAAE,IAAI,CAAC,mBAAmB;YACjC,cAAc,EAAE,IAAI,CAAC,0BAA0B;YAC/C,cAAc,EAAE,IAAI,CAAC,0BAA0B;SAChD,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpD,qBAAqB;QACrB,OAAO,MAAM,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,4DAA4D;YAC5D,yCAAyC;YACzC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC7B,gBAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAExB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YACH,yCAAyC;YACzC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC9B,IAAI,IAAI,CAAC,WAAW,EAAE;oBACpB,gBAAG,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC1C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;iBAC1B;gBAED,4DAA4D;gBAC5D,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QAED,gBAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW,CAAE,GAAG;QACpB,IAAI,aAAa,CAAC;QAElB,OAAO,MAAM,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,yBAAyB;YACzB,aAAa,GAAG,CAAC,GAAG,EAAE,EAAE;gBACtB,gBAAG,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAE1C,4DAA4D;gBAC5D,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC;YAEF,oCAAoC;YACpC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,uDAAuD;YACvD,IAAI;gBACF,oCAAoC;gBACpC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;aACpD;YAAC,OAAO,GAAG,EAAE,GAAE;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAE,IAAI;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QAED,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,KAAK,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,EAAE;YAChF,IAAI,CAAC,gBAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACxC;SACF;QACD,4CAA4C;QAC5C,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AA3JD,qCA2JC"}