appium-ios-simulator 5.0.1 → 5.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [5.0.3](https://github.com/appium/appium-ios-simulator/compare/v5.0.2...v5.0.3) (2023-01-04)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * retrieve an appropriate unix socket path ([#352](https://github.com/appium/appium-ios-simulator/issues/352)) ([de11bfc](https://github.com/appium/appium-ios-simulator/commit/de11bfc13b9f66252fe6f14865f6970c8950db63))
7
+
8
+ ## [5.0.2](https://github.com/appium/appium-ios-simulator/compare/v5.0.1...v5.0.2) (2022-12-19)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * udid reference in setAccess ([#350](https://github.com/appium/appium-ios-simulator/issues/350)) ([73d12a4](https://github.com/appium/appium-ios-simulator/commit/73d12a4417b7e3ec75b850e948c6bd91e75f214f))
14
+
1
15
  ## [5.0.1](https://github.com/appium/appium-ios-simulator/compare/v5.0.0...v5.0.1) (2022-12-15)
2
16
 
3
17
 
@@ -63,9 +63,9 @@ async function execWix(args) {
63
63
  throw new Error(`Cannot execute "${WIX_SIM_UTILS} ${_support.util.quote(args)}". Original error: ${e.stderr || e.message}`);
64
64
  }
65
65
  }
66
- async function setAccess(bundleId, permissionsMapping) {
66
+ async function setAccess(udid, bundleId, permissionsMapping) {
67
67
  const permissionsArg = _lodash.default.toPairs(permissionsMapping).map(x => `${x[0]}=${formatStatus(x[1])}`).join(',');
68
- return await execWix(['--byId', this.udid, '--bundle', bundleId, '--setPermissions', permissionsArg]);
68
+ return await execWix(['--byId', udid, '--bundle', bundleId, '--setPermissions', permissionsArg]);
69
69
  }
70
70
  async function getAccess(bundleId, serviceName, simDataRoot) {
71
71
  const internalServiceName = toInternalServiceName(serviceName);
@@ -87,7 +87,7 @@ extensions.setPermission = async function setPermission(bundleId, permission, va
87
87
  };
88
88
  extensions.setPermissions = async function setPermissions(bundleId, permissionsMapping) {
89
89
  _logger.default.debug(`Setting access for '${bundleId}': ${JSON.stringify(permissionsMapping, null, 2)}`);
90
- await setAccess(bundleId, permissionsMapping);
90
+ await setAccess(this.udid, bundleId, permissionsMapping);
91
91
  };
92
92
  extensions.getPermission = async function getPermission(bundleId, serviceName) {
93
93
  const result = await getAccess(bundleId, serviceName, this.getDir());
@@ -96,4 +96,4 @@ extensions.getPermission = async function getPermission(bundleId, serviceName) {
96
96
  };
97
97
  var _default = extensions;
98
98
  exports.default = _default;
99
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVEFUVVNfVU5TRVQiLCJTVEFUVVNfTk8iLCJTVEFUVVNfWUVTIiwiV0lYX1NJTV9VVElMUyIsIlNFUlZJQ0VTIiwiT2JqZWN0IiwiZnJlZXplIiwiY2FsZW5kYXIiLCJjYW1lcmEiLCJjb250YWN0cyIsImhvbWVraXQiLCJtaWNyb3Bob25lIiwicGhvdG9zIiwicmVtaW5kZXJzIiwibWVkaWFsaWJyYXJ5IiwibW90aW9uIiwiaGVhbHRoIiwic2lyaSIsInNwZWVjaCIsInRvSW50ZXJuYWxTZXJ2aWNlTmFtZSIsInNlcnZpY2VOYW1lIiwiXyIsImhhcyIsInRvTG93ZXIiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJrZXlzIiwiZm9ybWF0U3RhdHVzIiwic3RhdHVzIiwiaW5jbHVkZXMiLCJ0b1VwcGVyIiwiZXhlY1NRTGl0ZVF1ZXJ5IiwiZGIiLCJxdWVyeSIsImxvZyIsImRlYnVnIiwiZXhlYyIsInN0ZG91dCIsImVyciIsInN0ZGVyciIsImV4ZWNXaXgiLCJhcmdzIiwiZnMiLCJ3aGljaCIsImUiLCJ1dGlsIiwicXVvdGUiLCJtZXNzYWdlIiwic2V0QWNjZXNzIiwiYnVuZGxlSWQiLCJwZXJtaXNzaW9uc01hcHBpbmciLCJwZXJtaXNzaW9uc0FyZyIsInRvUGFpcnMiLCJtYXAiLCJ4Iiwiam9pbiIsInVkaWQiLCJnZXRBY2Nlc3MiLCJzaW1EYXRhUm9vdCIsImludGVybmFsU2VydmljZU5hbWUiLCJkYlBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsInNxbFZhbHVlIiwic3FsIiwiY291bnQiLCJwYXJzZUludCIsInNwbGl0IiwiZXh0ZW5zaW9ucyIsInNldFBlcm1pc3Npb24iLCJwZXJtaXNzaW9uIiwidmFsdWUiLCJzZXRQZXJtaXNzaW9ucyIsImdldFBlcm1pc3Npb24iLCJyZXN1bHQiLCJnZXREaXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXh0ZW5zaW9ucy9wZXJtaXNzaW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgU1RBVFVTX1VOU0VUID0gJ3Vuc2V0JztcbmNvbnN0IFNUQVRVU19OTyA9ICdubyc7XG5jb25zdCBTVEFUVVNfWUVTID0gJ3llcyc7XG5jb25zdCBXSVhfU0lNX1VUSUxTID0gJ2FwcGxlc2ltdXRpbHMnO1xuY29uc3QgU0VSVklDRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgY2FsZW5kYXI6ICdrVENDU2VydmljZUNhbGVuZGFyJyxcbiAgY2FtZXJhOiAna1RDQ1NlcnZpY2VDYW1lcmEnLFxuICBjb250YWN0czogJ2tUQ0NTZXJ2aWNlQWRkcmVzc0Jvb2snLFxuICBob21la2l0OiAna1RDQ1NlcnZpY2VXaWxsb3cnLFxuICBtaWNyb3Bob25lOiAna1RDQ1NlcnZpY2VNaWNyb3Bob25lJyxcbiAgcGhvdG9zOiAna1RDQ1NlcnZpY2VQaG90b3MnLFxuICByZW1pbmRlcnM6ICdrVENDU2VydmljZVJlbWluZGVycycsXG4gIG1lZGlhbGlicmFyeTogJ2tUQ0NTZXJ2aWNlTWVkaWFMaWJyYXJ5JyxcbiAgbW90aW9uOiAna1RDQ1NlcnZpY2VNb3Rpb24nLFxuICBoZWFsdGg6ICdrVENDU2VydmljZU1TTycsXG4gIHNpcmk6ICdrVENDU2VydmljZVNpcmknLFxuICBzcGVlY2g6ICdrVENDU2VydmljZVNwZWVjaFJlY29nbml0aW9uJyxcbn0pO1xuXG5mdW5jdGlvbiB0b0ludGVybmFsU2VydmljZU5hbWUgKHNlcnZpY2VOYW1lKSB7XG4gIGlmIChfLmhhcyhTRVJWSUNFUywgXy50b0xvd2VyKHNlcnZpY2VOYW1lKSkpIHtcbiAgICByZXR1cm4gU0VSVklDRVNbXy50b0xvd2VyKHNlcnZpY2VOYW1lKV07XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGAnJHtzZXJ2aWNlTmFtZX0nIGlzIHVua25vd24uIE9ubHkgdGhlIGZvbGxvd2luZyBzZXJ2aWNlIG5hbWVzIGFyZSBzdXBwb3J0ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoXy5rZXlzKFNFUlZJQ0VTKSl9YFxuICApO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRTdGF0dXMgKHN0YXR1cykge1xuICByZXR1cm4gW1NUQVRVU19VTlNFVCwgU1RBVFVTX05PXS5pbmNsdWRlcyhzdGF0dXMpID8gXy50b1VwcGVyKHN0YXR1cykgOiBzdGF0dXM7XG59XG5cbi8qKlxuICogUnVucyBhIGNvbW1hbmQgbGluZSBzcWxpdGUzIHF1ZXJ5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGRiIC0gRnVsbCBwYXRoIHRvIHNxbGl0ZSBkYXRhYmFzZVxuICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5IC0gVGhlIGFjdHVhbCBxdWVyeSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHNxbGl0ZSBjb21tYW5kIHN0ZG91dFxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjU1FMaXRlUXVlcnkgKGRiLCBxdWVyeSkge1xuICBsb2cuZGVidWcoYEV4ZWN1dGluZyBTUUwgcXVlcnkgXCIke3F1ZXJ5fVwiIG9uICcke2RifSdgKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGF3YWl0IGV4ZWMoJ3NxbGl0ZTMnLCBbJy1saW5lJywgZGIsIHF1ZXJ5XSkpLnN0ZG91dDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENhbm5vdCBleGVjdXRlIFNRTGl0ZSBxdWVyeSBcIiR7cXVlcnl9XCIgdG8gJyR7ZGJ9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLnN0ZGVycn1gXG4gICAgKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBleGVjV2l4IChhcmdzKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud2hpY2goV0lYX1NJTV9VVElMUyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtXSVhfU0lNX1VUSUxTfSBiaW5hcnkgaGFzIG5vdCBiZWVuIGZvdW5kIGluIHlvdXIgUEFUSC4gYCArXG4gICAgICBgUGxlYXNlIGluc3RhbGwgaXQgKCdicmV3IHRhcCB3aXgvYnJldyAmJiBicmV3IGluc3RhbGwgd2l4L2JyZXcvYXBwbGVzaW11dGlscycpIHRvIGAgK1xuICAgICAgYGJlIGFibGUgdG8gY2hhbmdlIGFwcGxpY2F0aW9uIHBlcm1pc3Npb25zYFxuICAgICk7XG4gIH1cblxuICBsb2cuZGVidWcoYEV4ZWN1dGluZzogJHtXSVhfU0lNX1VUSUxTfSAke3V0aWwucXVvdGUoYXJncyl9YCk7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKFdJWF9TSU1fVVRJTFMsIGFyZ3MpO1xuICAgIGxvZy5kZWJ1ZyhgQ29tbWFuZCBvdXRwdXQ6ICR7c3Rkb3V0fWApO1xuICAgIHJldHVybiBzdGRvdXQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBleGVjdXRlIFwiJHtXSVhfU0lNX1VUSUxTfSAke3V0aWwucXVvdGUoYXJncyl9XCIuIE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUubWVzc2FnZX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIFNldHMgcGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvblxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCAtIGJ1bmRsZSBpZGVudGlmaWVyIG9mIHRoZSB0YXJnZXQgYXBwbGljYXRpb24uXG4gKiBAcGFyYW0ge09iamVjdH0gcGVybWlzc2lvbnNNYXBwaW5nIC0gQW4gb2JqZWN0LCB3aGVyZSBrZXlzIGFyICBzZXJ2aWNlIG5hbWVzXG4gKiBhbmQgdmFsdWVzIGFyZSBjb3JyZXNwb25kaW5nIHN0YXRlIHZhbHVlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aXgvQXBwbGVTaW11bGF0b3JVdGlsc1xuICogZm9yIG1vcmUgZGV0YWlscyBvbiBhdmFpbGFibGUgc2VydmljZSBuYW1lcyBhbmQgc3RhdHVzZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGNoYW5naW5nIHBlcm1pc3Npb25zLlxuICovXG5hc3luYyBmdW5jdGlvbiBzZXRBY2Nlc3MgKGJ1bmRsZUlkLCBwZXJtaXNzaW9uc01hcHBpbmcpIHtcbiAgY29uc3QgcGVybWlzc2lvbnNBcmcgPSBfLnRvUGFpcnMocGVybWlzc2lvbnNNYXBwaW5nKVxuICAgIC5tYXAoKHgpID0+IGAke3hbMF19PSR7Zm9ybWF0U3RhdHVzKHhbMV0pfWApXG4gICAgLmpvaW4oJywnKTtcbiAgcmV0dXJuIGF3YWl0IGV4ZWNXaXgoW1xuICAgICctLWJ5SWQnLCB0aGlzLnVkaWQsXG4gICAgJy0tYnVuZGxlJywgYnVuZGxlSWQsXG4gICAgJy0tc2V0UGVybWlzc2lvbnMnLCBwZXJtaXNzaW9uc0FyZyxcbiAgXSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHBlcm1pc3Npb24gc3RhdHVzIGZvciB0aGUgZ2l2ZW4gc2VydmljZSBhbmQgYXBwbGljYXRpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJ1bmRsZUlkIC0gYnVuZGxlIGlkZW50aWZpZXIgb2YgdGhlIHRhcmdldCBhcHBsaWNhdGlvbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2aWNlTmFtZSAtIHRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlLiBTaG91bGQgYmUgb25lIG9mXG4gKiBgU0VSVklDRVNgIGtleXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2ltRGF0YVJvb3QgLSB0aGUgcGF0aCB0byBTaW11bGF0b3IgYGRhdGFgIHJvb3RcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGN1cnJlbnQgc3RhdHVzOiB5ZXMvbm8vdW5zZXRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcmV0cmlldmluZyBwZXJtaXNzaW9ucy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjZXNzIChidW5kbGVJZCwgc2VydmljZU5hbWUsIHNpbURhdGFSb290KSB7XG4gIGNvbnN0IGludGVybmFsU2VydmljZU5hbWUgPSB0b0ludGVybmFsU2VydmljZU5hbWUoc2VydmljZU5hbWUpO1xuICBjb25zdCBkYlBhdGggPSBwYXRoLnJlc29sdmUoc2ltRGF0YVJvb3QsICdMaWJyYXJ5JywgJ1RDQycsICdUQ0MuZGInKTtcbiAgZm9yIChjb25zdCBbc3FsVmFsdWUsIHN0YXR1c10gb2YgW1snMCcsIFNUQVRVU19OT10sIFsnMScsIFNUQVRVU19ZRVNdXSkge1xuICAgIGNvbnN0IHNxbCA9IGBTRUxFQ1QgY291bnQoKikgRlJPTSAnYWNjZXNzJyBgICtcbiAgICAgIGBXSEVSRSBjbGllbnQ9JyR7YnVuZGxlSWR9JyBBTkQgYWxsb3dlZD0ke3NxbFZhbHVlfSBBTkQgc2VydmljZT0nJHtpbnRlcm5hbFNlcnZpY2VOYW1lfSdgO1xuICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgZXhlY1NRTGl0ZVF1ZXJ5KGRiUGF0aCwgc3FsKTtcbiAgICBpZiAocGFyc2VJbnQoY291bnQuc3BsaXQoJz0nKVsxXSwgMTApID4gMCkge1xuICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNUQVRVU19VTlNFVDtcbn1cblxuXG5jb25zdCBleHRlbnNpb25zID0ge307XG5cbi8qKlxuICogU2V0cyB0aGUgcGFydGljdWxhciBwZXJtaXNzaW9uIHRvIHRoZSBhcHBsaWNhdGlvbiBidW5kbGUuIFNlZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3dpeC9BcHBsZVNpbXVsYXRvclV0aWxzIGZvciBtb3JlIGRldGFpbHMgb25cbiAqIHRoZSBhdmFpbGFibGUgc2VydmljZSBuYW1lcyBhbmQgc3RhdHVzZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJ1bmRsZUlkIC0gQXBwbGljYXRpb24gYnVuZGxlIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gcGVybWlzc2lvbiAtIFNlcnZpY2UgbmFtZSB0byBiZSBzZXQuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBUaGUgZGVzaXJlZCBzdGF0dXMgZm9yIHRoZSBzZXJ2aWNlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBjaGFuZ2luZyBwZXJtaXNzaW9uLlxuICovXG5leHRlbnNpb25zLnNldFBlcm1pc3Npb24gPSBhc3luYyBmdW5jdGlvbiBzZXRQZXJtaXNzaW9uIChidW5kbGVJZCwgcGVybWlzc2lvbiwgdmFsdWUpIHtcbiAgYXdhaXQgdGhpcy5zZXRQZXJtaXNzaW9ucyhidW5kbGVJZCwge1twZXJtaXNzaW9uXTogdmFsdWV9KTtcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgcGVybWlzc2lvbnMgZm9yIHRoZSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIGJ1bmRsZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBBcHBsaWNhdGlvbiBidW5kbGUgaWRlbnRpZmllci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwZXJtaXNzaW9uc01hcHBpbmcgLSBBIG1hcHBpbmcgd2hlcmUga2F5c1xuICogYXJlIHNlcnZpY2UgbmFtZXMgYW5kIHZhbHVlcyBhcmUgdGhlaXIgY29ycmVzcG9uZGluZyBzdGF0dXMgdmFsdWVzLlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aXgvQXBwbGVTaW11bGF0b3JVdGlsc1xuICogZm9yIG1vcmUgZGV0YWlscyBvbiBhdmFpbGFibGUgc2VydmljZSBuYW1lcyBhbmQgc3RhdHVzZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGNoYW5naW5nIHBlcm1pc3Npb25zLlxuICovXG5leHRlbnNpb25zLnNldFBlcm1pc3Npb25zID0gYXN5bmMgZnVuY3Rpb24gc2V0UGVybWlzc2lvbnMgKGJ1bmRsZUlkLCBwZXJtaXNzaW9uc01hcHBpbmcpIHtcbiAgbG9nLmRlYnVnKGBTZXR0aW5nIGFjY2VzcyBmb3IgJyR7YnVuZGxlSWR9JzogJHtKU09OLnN0cmluZ2lmeShwZXJtaXNzaW9uc01hcHBpbmcsIG51bGwsIDIpfWApO1xuICBhd2FpdCBzZXRBY2Nlc3MoYnVuZGxlSWQsIHBlcm1pc3Npb25zTWFwcGluZyk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBjdXJyZW50IHBlcm1pc3Npb24gc3RhdHVzIGZvciB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gYnVuZGxlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCAtIEFwcGxpY2F0aW9uIGJ1bmRsZSBpZGVudGlmaWVyLlxuICogQHBhcmFtIHtzdHJpbmd9IHNlcnZpY2VOYW1lIC0gT25lIG9mIGF2YWlsYWJsZSBzZXJ2aWNlIG5hbWVzLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZXRyaWV2aW5nIHBlcm1pc3Npb25zLlxuICovXG5leHRlbnNpb25zLmdldFBlcm1pc3Npb24gPSBhc3luYyBmdW5jdGlvbiBnZXRQZXJtaXNzaW9uIChidW5kbGVJZCwgc2VydmljZU5hbWUpIHtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0QWNjZXNzKGJ1bmRsZUlkLCBzZXJ2aWNlTmFtZSwgdGhpcy5nZXREaXIoKSk7XG4gIGxvZy5kZWJ1ZyhgR290ICR7c2VydmljZU5hbWV9IGFjY2VzcyBzdGF0dXMgZm9yICcke2J1bmRsZUlkfSc6ICR7cmVzdWx0fWApO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsWUFBWSxHQUFHLE9BQU87QUFDNUIsTUFBTUMsU0FBUyxHQUFHLElBQUk7QUFDdEIsTUFBTUMsVUFBVSxHQUFHLEtBQUs7QUFDeEIsTUFBTUMsYUFBYSxHQUFHLGVBQWU7QUFDckMsTUFBTUMsUUFBUSxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQztFQUM3QkMsUUFBUSxFQUFFLHFCQUFxQjtFQUMvQkMsTUFBTSxFQUFFLG1CQUFtQjtFQUMzQkMsUUFBUSxFQUFFLHdCQUF3QjtFQUNsQ0MsT0FBTyxFQUFFLG1CQUFtQjtFQUM1QkMsVUFBVSxFQUFFLHVCQUF1QjtFQUNuQ0MsTUFBTSxFQUFFLG1CQUFtQjtFQUMzQkMsU0FBUyxFQUFFLHNCQUFzQjtFQUNqQ0MsWUFBWSxFQUFFLHlCQUF5QjtFQUN2Q0MsTUFBTSxFQUFFLG1CQUFtQjtFQUMzQkMsTUFBTSxFQUFFLGdCQUFnQjtFQUN4QkMsSUFBSSxFQUFFLGlCQUFpQjtFQUN2QkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQyxDQUFDO0FBRUYsU0FBU0MscUJBQXFCLENBQUVDLFdBQVcsRUFBRTtFQUMzQyxJQUFJQyxlQUFDLENBQUNDLEdBQUcsQ0FBQ2xCLFFBQVEsRUFBRWlCLGVBQUMsQ0FBQ0UsT0FBTyxDQUFDSCxXQUFXLENBQUMsQ0FBQyxFQUFFO0lBQzNDLE9BQU9oQixRQUFRLENBQUNpQixlQUFDLENBQUNFLE9BQU8sQ0FBQ0gsV0FBVyxDQUFDLENBQUM7RUFDekM7RUFDQSxNQUFNLElBQUlJLEtBQUssQ0FDWixJQUFHSixXQUFZLGlFQUFnRUssSUFBSSxDQUFDQyxTQUFTLENBQUNMLGVBQUMsQ0FBQ00sSUFBSSxDQUFDdkIsUUFBUSxDQUFDLENBQUUsRUFBQyxDQUNuSDtBQUNIO0FBRUEsU0FBU3dCLFlBQVksQ0FBRUMsTUFBTSxFQUFFO0VBQzdCLE9BQU8sQ0FBQzdCLFlBQVksRUFBRUMsU0FBUyxDQUFDLENBQUM2QixRQUFRLENBQUNELE1BQU0sQ0FBQyxHQUFHUixlQUFDLENBQUNVLE9BQU8sQ0FBQ0YsTUFBTSxDQUFDLEdBQUdBLE1BQU07QUFDaEY7QUFTQSxlQUFlRyxlQUFlLENBQUVDLEVBQUUsRUFBRUMsS0FBSyxFQUFFO0VBQ3pDQyxlQUFHLENBQUNDLEtBQUssQ0FBRSx3QkFBdUJGLEtBQU0sU0FBUUQsRUFBRyxHQUFFLENBQUM7RUFDdEQsSUFBSTtJQUNGLE9BQU8sQ0FBQyxNQUFNLElBQUFJLGtCQUFJLEVBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFSixFQUFFLEVBQUVDLEtBQUssQ0FBQyxDQUFDLEVBQUVJLE1BQU07RUFDN0QsQ0FBQyxDQUFDLE9BQU9DLEdBQUcsRUFBRTtJQUNaLE1BQU0sSUFBSWYsS0FBSyxDQUNaLGdDQUErQlUsS0FBTSxTQUFRRCxFQUFHLHNCQUFxQk0sR0FBRyxDQUFDQyxNQUFPLEVBQUMsQ0FDbkY7RUFDSDtBQUNGO0FBRUEsZUFBZUMsT0FBTyxDQUFFQyxJQUFJLEVBQUU7RUFDNUIsSUFBSTtJQUNGLE1BQU1DLFdBQUUsQ0FBQ0MsS0FBSyxDQUFDekMsYUFBYSxDQUFDO0VBQy9CLENBQUMsQ0FBQyxPQUFPMEMsQ0FBQyxFQUFFO0lBQ1YsTUFBTSxJQUFJckIsS0FBSyxDQUNaLEdBQUVyQixhQUFjLDJDQUEwQyxHQUMxRCxvRkFBbUYsR0FDbkYsMkNBQTBDLENBQzVDO0VBQ0g7RUFFQWdDLGVBQUcsQ0FBQ0MsS0FBSyxDQUFFLGNBQWFqQyxhQUFjLElBQUcyQyxhQUFJLENBQUNDLEtBQUssQ0FBQ0wsSUFBSSxDQUFFLEVBQUMsQ0FBQztFQUM1RCxJQUFJO0lBQ0YsTUFBTTtNQUFDSjtJQUFNLENBQUMsR0FBRyxNQUFNLElBQUFELGtCQUFJLEVBQUNsQyxhQUFhLEVBQUV1QyxJQUFJLENBQUM7SUFDaERQLGVBQUcsQ0FBQ0MsS0FBSyxDQUFFLG1CQUFrQkUsTUFBTyxFQUFDLENBQUM7SUFDdEMsT0FBT0EsTUFBTTtFQUNmLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7SUFDVixNQUFNLElBQUlyQixLQUFLLENBQUUsbUJBQWtCckIsYUFBYyxJQUFHMkMsYUFBSSxDQUFDQyxLQUFLLENBQUNMLElBQUksQ0FBRSxzQkFBcUJHLENBQUMsQ0FBQ0wsTUFBTSxJQUFJSyxDQUFDLENBQUNHLE9BQVEsRUFBQyxDQUFDO0VBQ3BIO0FBQ0Y7QUFXQSxlQUFlQyxTQUFTLENBQUVDLFFBQVEsRUFBRUMsa0JBQWtCLEVBQUU7RUFDdEQsTUFBTUMsY0FBYyxHQUFHL0IsZUFBQyxDQUFDZ0MsT0FBTyxDQUFDRixrQkFBa0IsQ0FBQyxDQUNqREcsR0FBRyxDQUFFQyxDQUFDLElBQU0sR0FBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBRSxJQUFHM0IsWUFBWSxDQUFDMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLEVBQUMsQ0FBQyxDQUMzQ0MsSUFBSSxDQUFDLEdBQUcsQ0FBQztFQUNaLE9BQU8sTUFBTWYsT0FBTyxDQUFDLENBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUNnQixJQUFJLEVBQ25CLFVBQVUsRUFBRVAsUUFBUSxFQUNwQixrQkFBa0IsRUFBRUUsY0FBYyxDQUNuQyxDQUFDO0FBQ0o7QUFZQSxlQUFlTSxTQUFTLENBQUVSLFFBQVEsRUFBRTlCLFdBQVcsRUFBRXVDLFdBQVcsRUFBRTtFQUM1RCxNQUFNQyxtQkFBbUIsR0FBR3pDLHFCQUFxQixDQUFDQyxXQUFXLENBQUM7RUFDOUQsTUFBTXlDLE1BQU0sR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQUNKLFdBQVcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQztFQUNwRSxLQUFLLE1BQU0sQ0FBQ0ssUUFBUSxFQUFFbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRTVCLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFQyxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ3RFLE1BQU0rRCxHQUFHLEdBQUksZ0NBQStCLEdBQ3pDLGlCQUFnQmYsUUFBUyxpQkFBZ0JjLFFBQVMsaUJBQWdCSixtQkFBb0IsR0FBRTtJQUMzRixNQUFNTSxLQUFLLEdBQUcsTUFBTWxDLGVBQWUsQ0FBQzZCLE1BQU0sRUFBRUksR0FBRyxDQUFDO0lBQ2hELElBQUlFLFFBQVEsQ0FBQ0QsS0FBSyxDQUFDRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO01BQ3pDLE9BQU92QyxNQUFNO0lBQ2Y7RUFDRjtFQUNBLE9BQU83QixZQUFZO0FBQ3JCO0FBR0EsTUFBTXFFLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFZckJBLFVBQVUsQ0FBQ0MsYUFBYSxHQUFHLGVBQWVBLGFBQWEsQ0FBRXBCLFFBQVEsRUFBRXFCLFVBQVUsRUFBRUMsS0FBSyxFQUFFO0VBQ3BGLE1BQU0sSUFBSSxDQUFDQyxjQUFjLENBQUN2QixRQUFRLEVBQUU7SUFBQyxDQUFDcUIsVUFBVSxHQUFHQztFQUFLLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBWURILFVBQVUsQ0FBQ0ksY0FBYyxHQUFHLGVBQWVBLGNBQWMsQ0FBRXZCLFFBQVEsRUFBRUMsa0JBQWtCLEVBQUU7RUFDdkZoQixlQUFHLENBQUNDLEtBQUssQ0FBRSx1QkFBc0JjLFFBQVMsTUFBS3pCLElBQUksQ0FBQ0MsU0FBUyxDQUFDeUIsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBRSxFQUFDLENBQUM7RUFDN0YsTUFBTUYsU0FBUyxDQUFDQyxRQUFRLEVBQUVDLGtCQUFrQixDQUFDO0FBQy9DLENBQUM7QUFTRGtCLFVBQVUsQ0FBQ0ssYUFBYSxHQUFHLGVBQWVBLGFBQWEsQ0FBRXhCLFFBQVEsRUFBRTlCLFdBQVcsRUFBRTtFQUM5RSxNQUFNdUQsTUFBTSxHQUFHLE1BQU1qQixTQUFTLENBQUNSLFFBQVEsRUFBRTlCLFdBQVcsRUFBRSxJQUFJLENBQUN3RCxNQUFNLEVBQUUsQ0FBQztFQUNwRXpDLGVBQUcsQ0FBQ0MsS0FBSyxDQUFFLE9BQU1oQixXQUFZLHVCQUFzQjhCLFFBQVMsTUFBS3lCLE1BQU8sRUFBQyxDQUFDO0VBQzFFLE9BQU9BLE1BQU07QUFDZixDQUFDO0FBQUMsZUFFYU4sVUFBVTtBQUFBIn0=
99
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVEFUVVNfVU5TRVQiLCJTVEFUVVNfTk8iLCJTVEFUVVNfWUVTIiwiV0lYX1NJTV9VVElMUyIsIlNFUlZJQ0VTIiwiT2JqZWN0IiwiZnJlZXplIiwiY2FsZW5kYXIiLCJjYW1lcmEiLCJjb250YWN0cyIsImhvbWVraXQiLCJtaWNyb3Bob25lIiwicGhvdG9zIiwicmVtaW5kZXJzIiwibWVkaWFsaWJyYXJ5IiwibW90aW9uIiwiaGVhbHRoIiwic2lyaSIsInNwZWVjaCIsInRvSW50ZXJuYWxTZXJ2aWNlTmFtZSIsInNlcnZpY2VOYW1lIiwiXyIsImhhcyIsInRvTG93ZXIiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJrZXlzIiwiZm9ybWF0U3RhdHVzIiwic3RhdHVzIiwiaW5jbHVkZXMiLCJ0b1VwcGVyIiwiZXhlY1NRTGl0ZVF1ZXJ5IiwiZGIiLCJxdWVyeSIsImxvZyIsImRlYnVnIiwiZXhlYyIsInN0ZG91dCIsImVyciIsInN0ZGVyciIsImV4ZWNXaXgiLCJhcmdzIiwiZnMiLCJ3aGljaCIsImUiLCJ1dGlsIiwicXVvdGUiLCJtZXNzYWdlIiwic2V0QWNjZXNzIiwidWRpZCIsImJ1bmRsZUlkIiwicGVybWlzc2lvbnNNYXBwaW5nIiwicGVybWlzc2lvbnNBcmciLCJ0b1BhaXJzIiwibWFwIiwieCIsImpvaW4iLCJnZXRBY2Nlc3MiLCJzaW1EYXRhUm9vdCIsImludGVybmFsU2VydmljZU5hbWUiLCJkYlBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsInNxbFZhbHVlIiwic3FsIiwiY291bnQiLCJwYXJzZUludCIsInNwbGl0IiwiZXh0ZW5zaW9ucyIsInNldFBlcm1pc3Npb24iLCJwZXJtaXNzaW9uIiwidmFsdWUiLCJzZXRQZXJtaXNzaW9ucyIsImdldFBlcm1pc3Npb24iLCJyZXN1bHQiLCJnZXREaXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXh0ZW5zaW9ucy9wZXJtaXNzaW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgU1RBVFVTX1VOU0VUID0gJ3Vuc2V0JztcbmNvbnN0IFNUQVRVU19OTyA9ICdubyc7XG5jb25zdCBTVEFUVVNfWUVTID0gJ3llcyc7XG5jb25zdCBXSVhfU0lNX1VUSUxTID0gJ2FwcGxlc2ltdXRpbHMnO1xuY29uc3QgU0VSVklDRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgY2FsZW5kYXI6ICdrVENDU2VydmljZUNhbGVuZGFyJyxcbiAgY2FtZXJhOiAna1RDQ1NlcnZpY2VDYW1lcmEnLFxuICBjb250YWN0czogJ2tUQ0NTZXJ2aWNlQWRkcmVzc0Jvb2snLFxuICBob21la2l0OiAna1RDQ1NlcnZpY2VXaWxsb3cnLFxuICBtaWNyb3Bob25lOiAna1RDQ1NlcnZpY2VNaWNyb3Bob25lJyxcbiAgcGhvdG9zOiAna1RDQ1NlcnZpY2VQaG90b3MnLFxuICByZW1pbmRlcnM6ICdrVENDU2VydmljZVJlbWluZGVycycsXG4gIG1lZGlhbGlicmFyeTogJ2tUQ0NTZXJ2aWNlTWVkaWFMaWJyYXJ5JyxcbiAgbW90aW9uOiAna1RDQ1NlcnZpY2VNb3Rpb24nLFxuICBoZWFsdGg6ICdrVENDU2VydmljZU1TTycsXG4gIHNpcmk6ICdrVENDU2VydmljZVNpcmknLFxuICBzcGVlY2g6ICdrVENDU2VydmljZVNwZWVjaFJlY29nbml0aW9uJyxcbn0pO1xuXG5mdW5jdGlvbiB0b0ludGVybmFsU2VydmljZU5hbWUgKHNlcnZpY2VOYW1lKSB7XG4gIGlmIChfLmhhcyhTRVJWSUNFUywgXy50b0xvd2VyKHNlcnZpY2VOYW1lKSkpIHtcbiAgICByZXR1cm4gU0VSVklDRVNbXy50b0xvd2VyKHNlcnZpY2VOYW1lKV07XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGAnJHtzZXJ2aWNlTmFtZX0nIGlzIHVua25vd24uIE9ubHkgdGhlIGZvbGxvd2luZyBzZXJ2aWNlIG5hbWVzIGFyZSBzdXBwb3J0ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoXy5rZXlzKFNFUlZJQ0VTKSl9YFxuICApO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRTdGF0dXMgKHN0YXR1cykge1xuICByZXR1cm4gW1NUQVRVU19VTlNFVCwgU1RBVFVTX05PXS5pbmNsdWRlcyhzdGF0dXMpID8gXy50b1VwcGVyKHN0YXR1cykgOiBzdGF0dXM7XG59XG5cbi8qKlxuICogUnVucyBhIGNvbW1hbmQgbGluZSBzcWxpdGUzIHF1ZXJ5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGRiIC0gRnVsbCBwYXRoIHRvIHNxbGl0ZSBkYXRhYmFzZVxuICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5IC0gVGhlIGFjdHVhbCBxdWVyeSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHNxbGl0ZSBjb21tYW5kIHN0ZG91dFxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjU1FMaXRlUXVlcnkgKGRiLCBxdWVyeSkge1xuICBsb2cuZGVidWcoYEV4ZWN1dGluZyBTUUwgcXVlcnkgXCIke3F1ZXJ5fVwiIG9uICcke2RifSdgKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGF3YWl0IGV4ZWMoJ3NxbGl0ZTMnLCBbJy1saW5lJywgZGIsIHF1ZXJ5XSkpLnN0ZG91dDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENhbm5vdCBleGVjdXRlIFNRTGl0ZSBxdWVyeSBcIiR7cXVlcnl9XCIgdG8gJyR7ZGJ9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLnN0ZGVycn1gXG4gICAgKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBleGVjV2l4IChhcmdzKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud2hpY2goV0lYX1NJTV9VVElMUyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtXSVhfU0lNX1VUSUxTfSBiaW5hcnkgaGFzIG5vdCBiZWVuIGZvdW5kIGluIHlvdXIgUEFUSC4gYCArXG4gICAgICBgUGxlYXNlIGluc3RhbGwgaXQgKCdicmV3IHRhcCB3aXgvYnJldyAmJiBicmV3IGluc3RhbGwgd2l4L2JyZXcvYXBwbGVzaW11dGlscycpIHRvIGAgK1xuICAgICAgYGJlIGFibGUgdG8gY2hhbmdlIGFwcGxpY2F0aW9uIHBlcm1pc3Npb25zYFxuICAgICk7XG4gIH1cblxuICBsb2cuZGVidWcoYEV4ZWN1dGluZzogJHtXSVhfU0lNX1VUSUxTfSAke3V0aWwucXVvdGUoYXJncyl9YCk7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKFdJWF9TSU1fVVRJTFMsIGFyZ3MpO1xuICAgIGxvZy5kZWJ1ZyhgQ29tbWFuZCBvdXRwdXQ6ICR7c3Rkb3V0fWApO1xuICAgIHJldHVybiBzdGRvdXQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBleGVjdXRlIFwiJHtXSVhfU0lNX1VUSUxTfSAke3V0aWwucXVvdGUoYXJncyl9XCIuIE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUubWVzc2FnZX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIFNldHMgcGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvblxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIC0gdWRpZCBvZiB0aGUgdGFyZ2V0IHNpbXVsYXRvciBkZXZpY2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBidW5kbGUgaWRlbnRpZmllciBvZiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uLlxuICogQHBhcmFtIHtPYmplY3R9IHBlcm1pc3Npb25zTWFwcGluZyAtIEFuIG9iamVjdCwgd2hlcmUga2V5cyBhciAgc2VydmljZSBuYW1lc1xuICogYW5kIHZhbHVlcyBhcmUgY29ycmVzcG9uZGluZyBzdGF0ZSB2YWx1ZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2l4L0FwcGxlU2ltdWxhdG9yVXRpbHNcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gYXZhaWxhYmxlIHNlcnZpY2UgbmFtZXMgYW5kIHN0YXR1c2VzLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBjaGFuZ2luZyBwZXJtaXNzaW9ucy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2V0QWNjZXNzICh1ZGlkLCBidW5kbGVJZCwgcGVybWlzc2lvbnNNYXBwaW5nKSB7XG4gIGNvbnN0IHBlcm1pc3Npb25zQXJnID0gXy50b1BhaXJzKHBlcm1pc3Npb25zTWFwcGluZylcbiAgICAubWFwKCh4KSA9PiBgJHt4WzBdfT0ke2Zvcm1hdFN0YXR1cyh4WzFdKX1gKVxuICAgIC5qb2luKCcsJyk7XG4gIHJldHVybiBhd2FpdCBleGVjV2l4KFtcbiAgICAnLS1ieUlkJywgdWRpZCxcbiAgICAnLS1idW5kbGUnLCBidW5kbGVJZCxcbiAgICAnLS1zZXRQZXJtaXNzaW9ucycsIHBlcm1pc3Npb25zQXJnLFxuICBdKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgcGVybWlzc2lvbiBzdGF0dXMgZm9yIHRoZSBnaXZlbiBzZXJ2aWNlIGFuZCBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBidW5kbGUgaWRlbnRpZmllciBvZiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IHNlcnZpY2VOYW1lIC0gdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UuIFNob3VsZCBiZSBvbmUgb2ZcbiAqIGBTRVJWSUNFU2Aga2V5cy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzaW1EYXRhUm9vdCAtIHRoZSBwYXRoIHRvIFNpbXVsYXRvciBgZGF0YWAgcm9vdFxuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgY3VycmVudCBzdGF0dXM6IHllcy9uby91bnNldFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZXRyaWV2aW5nIHBlcm1pc3Npb25zLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRBY2Nlc3MgKGJ1bmRsZUlkLCBzZXJ2aWNlTmFtZSwgc2ltRGF0YVJvb3QpIHtcbiAgY29uc3QgaW50ZXJuYWxTZXJ2aWNlTmFtZSA9IHRvSW50ZXJuYWxTZXJ2aWNlTmFtZShzZXJ2aWNlTmFtZSk7XG4gIGNvbnN0IGRiUGF0aCA9IHBhdGgucmVzb2x2ZShzaW1EYXRhUm9vdCwgJ0xpYnJhcnknLCAnVENDJywgJ1RDQy5kYicpO1xuICBmb3IgKGNvbnN0IFtzcWxWYWx1ZSwgc3RhdHVzXSBvZiBbWycwJywgU1RBVFVTX05PXSwgWycxJywgU1RBVFVTX1lFU11dKSB7XG4gICAgY29uc3Qgc3FsID0gYFNFTEVDVCBjb3VudCgqKSBGUk9NICdhY2Nlc3MnIGAgK1xuICAgICAgYFdIRVJFIGNsaWVudD0nJHtidW5kbGVJZH0nIEFORCBhbGxvd2VkPSR7c3FsVmFsdWV9IEFORCBzZXJ2aWNlPScke2ludGVybmFsU2VydmljZU5hbWV9J2A7XG4gICAgY29uc3QgY291bnQgPSBhd2FpdCBleGVjU1FMaXRlUXVlcnkoZGJQYXRoLCBzcWwpO1xuICAgIGlmIChwYXJzZUludChjb3VudC5zcGxpdCgnPScpWzFdLCAxMCkgPiAwKSB7XG4gICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gU1RBVFVTX1VOU0VUO1xufVxuXG5cbmNvbnN0IGV4dGVuc2lvbnMgPSB7fTtcblxuLyoqXG4gKiBTZXRzIHRoZSBwYXJ0aWN1bGFyIHBlcm1pc3Npb24gdG8gdGhlIGFwcGxpY2F0aW9uIGJ1bmRsZS4gU2VlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vd2l4L0FwcGxlU2ltdWxhdG9yVXRpbHMgZm9yIG1vcmUgZGV0YWlscyBvblxuICogdGhlIGF2YWlsYWJsZSBzZXJ2aWNlIG5hbWVzIGFuZCBzdGF0dXNlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBBcHBsaWNhdGlvbiBidW5kbGUgaWRlbnRpZmllci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwZXJtaXNzaW9uIC0gU2VydmljZSBuYW1lIHRvIGJlIHNldC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFRoZSBkZXNpcmVkIHN0YXR1cyBmb3IgdGhlIHNlcnZpY2UuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGNoYW5naW5nIHBlcm1pc3Npb24uXG4gKi9cbmV4dGVuc2lvbnMuc2V0UGVybWlzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldFBlcm1pc3Npb24gKGJ1bmRsZUlkLCBwZXJtaXNzaW9uLCB2YWx1ZSkge1xuICBhd2FpdCB0aGlzLnNldFBlcm1pc3Npb25zKGJ1bmRsZUlkLCB7W3Blcm1pc3Npb25dOiB2YWx1ZX0pO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gYnVuZGxlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCAtIEFwcGxpY2F0aW9uIGJ1bmRsZSBpZGVudGlmaWVyLlxuICogQHBhcmFtIHtPYmplY3R9IHBlcm1pc3Npb25zTWFwcGluZyAtIEEgbWFwcGluZyB3aGVyZSBrYXlzXG4gKiBhcmUgc2VydmljZSBuYW1lcyBhbmQgdmFsdWVzIGFyZSB0aGVpciBjb3JyZXNwb25kaW5nIHN0YXR1cyB2YWx1ZXMuXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dpeC9BcHBsZVNpbXVsYXRvclV0aWxzXG4gKiBmb3IgbW9yZSBkZXRhaWxzIG9uIGF2YWlsYWJsZSBzZXJ2aWNlIG5hbWVzIGFuZCBzdGF0dXNlcy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgY2hhbmdpbmcgcGVybWlzc2lvbnMuXG4gKi9cbmV4dGVuc2lvbnMuc2V0UGVybWlzc2lvbnMgPSBhc3luYyBmdW5jdGlvbiBzZXRQZXJtaXNzaW9ucyAoYnVuZGxlSWQsIHBlcm1pc3Npb25zTWFwcGluZykge1xuICBsb2cuZGVidWcoYFNldHRpbmcgYWNjZXNzIGZvciAnJHtidW5kbGVJZH0nOiAke0pTT04uc3RyaW5naWZ5KHBlcm1pc3Npb25zTWFwcGluZywgbnVsbCwgMil9YCk7XG4gIGF3YWl0IHNldEFjY2Vzcyh0aGlzLnVkaWQsIGJ1bmRsZUlkLCBwZXJtaXNzaW9uc01hcHBpbmcpO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgY3VycmVudCBwZXJtaXNzaW9uIHN0YXR1cyBmb3IgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIGJ1bmRsZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBBcHBsaWNhdGlvbiBidW5kbGUgaWRlbnRpZmllci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2aWNlTmFtZSAtIE9uZSBvZiBhdmFpbGFibGUgc2VydmljZSBuYW1lcy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcmV0cmlldmluZyBwZXJtaXNzaW9ucy5cbiAqL1xuZXh0ZW5zaW9ucy5nZXRQZXJtaXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0UGVybWlzc2lvbiAoYnVuZGxlSWQsIHNlcnZpY2VOYW1lKSB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEFjY2VzcyhidW5kbGVJZCwgc2VydmljZU5hbWUsIHRoaXMuZ2V0RGlyKCkpO1xuICBsb2cuZGVidWcoYEdvdCAke3NlcnZpY2VOYW1lfSBhY2Nlc3Mgc3RhdHVzIGZvciAnJHtidW5kbGVJZH0nOiAke3Jlc3VsdH1gKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLFlBQVksR0FBRyxPQUFPO0FBQzVCLE1BQU1DLFNBQVMsR0FBRyxJ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
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","names":["STATUS_UNSET","STATUS_NO","STATUS_YES","WIX_SIM_UTILS","SERVICES","Object","freeze","calendar","camera","contacts","homekit","microphone","photos","reminders","medialibrary","motion","health","siri","speech","toInternalServiceName","serviceName","_","has","toLower","Error","JSON","stringify","keys","formatStatus","status","includes","toUpper","execSQLiteQuery","db","query","log","debug","exec","stdout","err","stderr","execWix","args","fs","which","e","util","quote","message","setAccess","bundleId","permissionsMapping","permissionsArg","toPairs","map","x","join","udid","getAccess","simDataRoot","internalServiceName","dbPath","path","resolve","sqlValue","sql","count","parseInt","split","extensions","setPermission","permission","value","setPermissions","getPermission","result","getDir"],"sources":["../../../lib/extensions/permissions.js"],"sourcesContent":["import log from '../logger';\nimport _ from 'lodash';\nimport { fs, util } from '@appium/support';\nimport { exec } from 'teen_process';\nimport path from 'path';\n\nconst STATUS_UNSET = 'unset';\nconst STATUS_NO = 'no';\nconst STATUS_YES = 'yes';\nconst WIX_SIM_UTILS = 'applesimutils';\nconst SERVICES = Object.freeze({\n calendar: 'kTCCServiceCalendar',\n camera: 'kTCCServiceCamera',\n contacts: 'kTCCServiceAddressBook',\n homekit: 'kTCCServiceWillow',\n microphone: 'kTCCServiceMicrophone',\n photos: 'kTCCServicePhotos',\n reminders: 'kTCCServiceReminders',\n medialibrary: 'kTCCServiceMediaLibrary',\n motion: 'kTCCServiceMotion',\n health: 'kTCCServiceMSO',\n siri: 'kTCCServiceSiri',\n speech: 'kTCCServiceSpeechRecognition',\n});\n\nfunction toInternalServiceName (serviceName) {\n if (_.has(SERVICES, _.toLower(serviceName))) {\n return SERVICES[_.toLower(serviceName)];\n }\n throw new Error(\n `'${serviceName}' is unknown. Only the following service names are supported: ${JSON.stringify(_.keys(SERVICES))}`\n );\n}\n\nfunction formatStatus (status) {\n return [STATUS_UNSET, STATUS_NO].includes(status) ? _.toUpper(status) : status;\n}\n\n/**\n * Runs a command line sqlite3 query\n *\n * @param {string} db - Full path to sqlite database\n * @param {string} query - The actual query string\n * @returns {string} sqlite command stdout\n */\nasync function execSQLiteQuery (db, query) {\n log.debug(`Executing SQL query \"${query}\" on '${db}'`);\n try {\n return (await exec('sqlite3', ['-line', db, query])).stdout;\n } catch (err) {\n throw new Error(\n `Cannot execute SQLite query \"${query}\" to '${db}'. Original error: ${err.stderr}`\n );\n }\n}\n\nasync function execWix (args) {\n try {\n await fs.which(WIX_SIM_UTILS);\n } catch (e) {\n throw new Error(\n `${WIX_SIM_UTILS} binary has not been found in your PATH. ` +\n `Please install it ('brew tap wix/brew && brew install wix/brew/applesimutils') to ` +\n `be able to change application permissions`\n );\n }\n\n log.debug(`Executing: ${WIX_SIM_UTILS} ${util.quote(args)}`);\n try {\n const {stdout} = await exec(WIX_SIM_UTILS, args);\n log.debug(`Command output: ${stdout}`);\n return stdout;\n } catch (e) {\n throw new Error(`Cannot execute \"${WIX_SIM_UTILS} ${util.quote(args)}\". Original error: ${e.stderr || e.message}`);\n }\n}\n\n/**\n * Sets permissions for the given application\n *\n * @param {string} bundleId - bundle identifier of the target application.\n * @param {Object} permissionsMapping - An object, where keys ar service names\n * and values are corresponding state values. See https://github.com/wix/AppleSimulatorUtils\n * for more details on available service names and statuses.\n * @throws {Error} If there was an error while changing permissions.\n */\nasync function setAccess (bundleId, permissionsMapping) {\n const permissionsArg = _.toPairs(permissionsMapping)\n .map((x) => `${x[0]}=${formatStatus(x[1])}`)\n .join(',');\n return await execWix([\n '--byId', this.udid,\n '--bundle', bundleId,\n '--setPermissions', permissionsArg,\n ]);\n}\n\n/**\n * Retrieves the current permission status for the given service and application.\n *\n * @param {string} bundleId - bundle identifier of the target application.\n * @param {string} serviceName - the name of the service. Should be one of\n * `SERVICES` keys.\n * @param {string} simDataRoot - the path to Simulator `data` root\n * @returns {string} - The current status: yes/no/unset\n * @throws {Error} If there was an error while retrieving permissions.\n */\nasync function getAccess (bundleId, serviceName, simDataRoot) {\n const internalServiceName = toInternalServiceName(serviceName);\n const dbPath = path.resolve(simDataRoot, 'Library', 'TCC', 'TCC.db');\n for (const [sqlValue, status] of [['0', STATUS_NO], ['1', STATUS_YES]]) {\n const sql = `SELECT count(*) FROM 'access' ` +\n `WHERE client='${bundleId}' AND allowed=${sqlValue} AND service='${internalServiceName}'`;\n const count = await execSQLiteQuery(dbPath, sql);\n if (parseInt(count.split('=')[1], 10) > 0) {\n return status;\n }\n }\n return STATUS_UNSET;\n}\n\n\nconst extensions = {};\n\n/**\n * Sets the particular permission to the application bundle. See\n * https://github.com/wix/AppleSimulatorUtils for more details on\n * the available service names and statuses.\n *\n * @param {string} bundleId - Application bundle identifier.\n * @param {string} permission - Service name to be set.\n * @param {string} value - The desired status for the service.\n * @throws {Error} If there was an error while changing permission.\n */\nextensions.setPermission = async function setPermission (bundleId, permission, value) {\n await this.setPermissions(bundleId, {[permission]: value});\n};\n\n/**\n * Sets the permissions for the particular application bundle.\n *\n * @param {string} bundleId - Application bundle identifier.\n * @param {Object} permissionsMapping - A mapping where kays\n * are service names and values are their corresponding status values.\n * See https://github.com/wix/AppleSimulatorUtils\n * for more details on available service names and statuses.\n * @throws {Error} If there was an error while changing permissions.\n */\nextensions.setPermissions = async function setPermissions (bundleId, permissionsMapping) {\n log.debug(`Setting access for '${bundleId}': ${JSON.stringify(permissionsMapping, null, 2)}`);\n await setAccess(bundleId, permissionsMapping);\n};\n\n/**\n * Retrieves current permission status for the given application bundle.\n *\n * @param {string} bundleId - Application bundle identifier.\n * @param {string} serviceName - One of available service names.\n * @throws {Error} If there was an error while retrieving permissions.\n */\nextensions.getPermission = async function getPermission (bundleId, serviceName) {\n const result = await getAccess(bundleId, serviceName, this.getDir());\n log.debug(`Got ${serviceName} access status for '${bundleId}': ${result}`);\n return result;\n};\n\nexport default extensions;\n"],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","names":["STATUS_UNSET","STATUS_NO","STATUS_YES","WIX_SIM_UTILS","SERVICES","Object","freeze","calendar","camera","contacts","homekit","microphone","photos","reminders","medialibrary","motion","health","siri","speech","toInternalServiceName","serviceName","_","has","toLower","Error","JSON","stringify","keys","formatStatus","status","includes","toUpper","execSQLiteQuery","db","query","log","debug","exec","stdout","err","stderr","execWix","args","fs","which","e","util","quote","message","setAccess","udid","bundleId","permissionsMapping","permissionsArg","toPairs","map","x","join","getAccess","simDataRoot","internalServiceName","dbPath","path","resolve","sqlValue","sql","count","parseInt","split","extensions","setPermission","permission","value","setPermissions","getPermission","result","getDir"],"sources":["../../../lib/extensions/permissions.js"],"sourcesContent":["import log from '../logger';\nimport _ from 'lodash';\nimport { fs, util } from '@appium/support';\nimport { exec } from 'teen_process';\nimport path from 'path';\n\nconst STATUS_UNSET = 'unset';\nconst STATUS_NO = 'no';\nconst STATUS_YES = 'yes';\nconst WIX_SIM_UTILS = 'applesimutils';\nconst SERVICES = Object.freeze({\n calendar: 'kTCCServiceCalendar',\n camera: 'kTCCServiceCamera',\n contacts: 'kTCCServiceAddressBook',\n homekit: 'kTCCServiceWillow',\n microphone: 'kTCCServiceMicrophone',\n photos: 'kTCCServicePhotos',\n reminders: 'kTCCServiceReminders',\n medialibrary: 'kTCCServiceMediaLibrary',\n motion: 'kTCCServiceMotion',\n health: 'kTCCServiceMSO',\n siri: 'kTCCServiceSiri',\n speech: 'kTCCServiceSpeechRecognition',\n});\n\nfunction toInternalServiceName (serviceName) {\n if (_.has(SERVICES, _.toLower(serviceName))) {\n return SERVICES[_.toLower(serviceName)];\n }\n throw new Error(\n `'${serviceName}' is unknown. Only the following service names are supported: ${JSON.stringify(_.keys(SERVICES))}`\n );\n}\n\nfunction formatStatus (status) {\n return [STATUS_UNSET, STATUS_NO].includes(status) ? _.toUpper(status) : status;\n}\n\n/**\n * Runs a command line sqlite3 query\n *\n * @param {string} db - Full path to sqlite database\n * @param {string} query - The actual query string\n * @returns {string} sqlite command stdout\n */\nasync function execSQLiteQuery (db, query) {\n log.debug(`Executing SQL query \"${query}\" on '${db}'`);\n try {\n return (await exec('sqlite3', ['-line', db, query])).stdout;\n } catch (err) {\n throw new Error(\n `Cannot execute SQLite query \"${query}\" to '${db}'. Original error: ${err.stderr}`\n );\n }\n}\n\nasync function execWix (args) {\n try {\n await fs.which(WIX_SIM_UTILS);\n } catch (e) {\n throw new Error(\n `${WIX_SIM_UTILS} binary has not been found in your PATH. ` +\n `Please install it ('brew tap wix/brew && brew install wix/brew/applesimutils') to ` +\n `be able to change application permissions`\n );\n }\n\n log.debug(`Executing: ${WIX_SIM_UTILS} ${util.quote(args)}`);\n try {\n const {stdout} = await exec(WIX_SIM_UTILS, args);\n log.debug(`Command output: ${stdout}`);\n return stdout;\n } catch (e) {\n throw new Error(`Cannot execute \"${WIX_SIM_UTILS} ${util.quote(args)}\". Original error: ${e.stderr || e.message}`);\n }\n}\n\n/**\n * Sets permissions for the given application\n *\n * @param {string} udid - udid of the target simulator device.\n * @param {string} bundleId - bundle identifier of the target application.\n * @param {Object} permissionsMapping - An object, where keys ar service names\n * and values are corresponding state values. See https://github.com/wix/AppleSimulatorUtils\n * for more details on available service names and statuses.\n * @throws {Error} If there was an error while changing permissions.\n */\nasync function setAccess (udid, bundleId, permissionsMapping) {\n const permissionsArg = _.toPairs(permissionsMapping)\n .map((x) => `${x[0]}=${formatStatus(x[1])}`)\n .join(',');\n return await execWix([\n '--byId', udid,\n '--bundle', bundleId,\n '--setPermissions', permissionsArg,\n ]);\n}\n\n/**\n * Retrieves the current permission status for the given service and application.\n *\n * @param {string} bundleId - bundle identifier of the target application.\n * @param {string} serviceName - the name of the service. Should be one of\n * `SERVICES` keys.\n * @param {string} simDataRoot - the path to Simulator `data` root\n * @returns {string} - The current status: yes/no/unset\n * @throws {Error} If there was an error while retrieving permissions.\n */\nasync function getAccess (bundleId, serviceName, simDataRoot) {\n const internalServiceName = toInternalServiceName(serviceName);\n const dbPath = path.resolve(simDataRoot, 'Library', 'TCC', 'TCC.db');\n for (const [sqlValue, status] of [['0', STATUS_NO], ['1', STATUS_YES]]) {\n const sql = `SELECT count(*) FROM 'access' ` +\n `WHERE client='${bundleId}' AND allowed=${sqlValue} AND service='${internalServiceName}'`;\n const count = await execSQLiteQuery(dbPath, sql);\n if (parseInt(count.split('=')[1], 10) > 0) {\n return status;\n }\n }\n return STATUS_UNSET;\n}\n\n\nconst extensions = {};\n\n/**\n * Sets the particular permission to the application bundle. See\n * https://github.com/wix/AppleSimulatorUtils for more details on\n * the available service names and statuses.\n *\n * @param {string} bundleId - Application bundle identifier.\n * @param {string} permission - Service name to be set.\n * @param {string} value - The desired status for the service.\n * @throws {Error} If there was an error while changing permission.\n */\nextensions.setPermission = async function setPermission (bundleId, permission, value) {\n await this.setPermissions(bundleId, {[permission]: value});\n};\n\n/**\n * Sets the permissions for the particular application bundle.\n *\n * @param {string} bundleId - Application bundle identifier.\n * @param {Object} permissionsMapping - A mapping where kays\n * are service names and values are their corresponding status values.\n * See https://github.com/wix/AppleSimulatorUtils\n * for more details on available service names and statuses.\n * @throws {Error} If there was an error while changing permissions.\n */\nextensions.setPermissions = async function setPermissions (bundleId, permissionsMapping) {\n log.debug(`Setting access for '${bundleId}': ${JSON.stringify(permissionsMapping, null, 2)}`);\n await setAccess(this.udid, bundleId, permissionsMapping);\n};\n\n/**\n * Retrieves current permission status for the given application bundle.\n *\n * @param {string} bundleId - Application bundle identifier.\n * @param {string} serviceName - One of available service names.\n * @throws {Error} If there was an error while retrieving permissions.\n */\nextensions.getPermission = async function getPermission (bundleId, serviceName) {\n const result = await getAccess(bundleId, serviceName, this.getDir());\n log.debug(`Got ${serviceName} access status for '${bundleId}': ${result}`);\n return result;\n};\n\nexport default extensions;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAEA,MAAMA,YAAY,GAAG,OAAO;AAC5B,MAAMC,SAAS,GAAG,IAAI;AACtB,MAAMC,UAAU,GAAG,KAAK;AACxB,MAAMC,aAAa,GAAG,eAAe;AACrC,MAAMC,QAAQ,GAAGC,MAAM,CAACC,MAAM,CAAC;EAC7BC,QAAQ,EAAE,qBAAqB;EAC/BC,MAAM,EAAE,mBAAmB;EAC3BC,QAAQ,EAAE,wBAAwB;EAClCC,OAAO,EAAE,mBAAmB;EAC5BC,UAAU,EAAE,uBAAuB;EACnCC,MAAM,EAAE,mBAAmB;EAC3BC,SAAS,EAAE,sBAAsB;EACjCC,YAAY,EAAE,yBAAyB;EACvCC,MAAM,EAAE,mBAAmB;EAC3BC,MAAM,EAAE,gBAAgB;EACxBC,IAAI,EAAE,iBAAiB;EACvBC,MAAM,EAAE;AACV,CAAC,CAAC;AAEF,SAASC,qBAAqB,CAAEC,WAAW,EAAE;EAC3C,IAAIC,eAAC,CAACC,GAAG,CAAClB,QAAQ,EAAEiB,eAAC,CAACE,OAAO,CAACH,WAAW,CAAC,CAAC,EAAE;IAC3C,OAAOhB,QAAQ,CAACiB,eAAC,CAACE,OAAO,CAACH,WAAW,CAAC,CAAC;EACzC;EACA,MAAM,IAAII,KAAK,CACZ,IAAGJ,WAAY,iEAAgEK,IAAI,CAACC,SAAS,CAACL,eAAC,CAACM,IAAI,CAACvB,QAAQ,CAAC,CAAE,EAAC,CACnH;AACH;AAEA,SAASwB,YAAY,CAAEC,MAAM,EAAE;EAC7B,OAAO,CAAC7B,YAAY,EAAEC,SAAS,CAAC,CAAC6B,QAAQ,CAACD,MAAM,CAAC,GAAGR,eAAC,CAACU,OAAO,CAACF,MAAM,CAAC,GAAGA,MAAM;AAChF;AASA,eAAeG,eAAe,CAAEC,EAAE,EAAEC,KAAK,EAAE;EACzCC,eAAG,CAACC,KAAK,CAAE,wBAAuBF,KAAM,SAAQD,EAAG,GAAE,CAAC;EACtD,IAAI;IACF,OAAO,CAAC,MAAM,IAAAI,kBAAI,EAAC,SAAS,EAAE,CAAC,OAAO,EAAEJ,EAAE,EAAEC,KAAK,CAAC,CAAC,EAAEI,MAAM;EAC7D,CAAC,CAAC,OAAOC,GAAG,EAAE;IACZ,MAAM,IAAIf,KAAK,CACZ,gCAA+BU,KAAM,SAAQD,EAAG,sBAAqBM,GAAG,CAACC,MAAO,EAAC,CACnF;EACH;AACF;AAEA,eAAeC,OAAO,CAAEC,IAAI,EAAE;EAC5B,IAAI;IACF,MAAMC,WAAE,CAACC,KAAK,CAACzC,aAAa,CAAC;EAC/B,CAAC,CAAC,OAAO0C,CAAC,EAAE;IACV,MAAM,IAAIrB,KAAK,CACZ,GAAErB,aAAc,2CAA0C,GAC1D,oFAAmF,GACnF,2CAA0C,CAC5C;EACH;EAEAgC,eAAG,CAACC,KAAK,CAAE,cAAajC,aAAc,IAAG2C,aAAI,CAACC,KAAK,CAACL,IAAI,CAAE,EAAC,CAAC;EAC5D,IAAI;IACF,MAAM;MAACJ;IAAM,CAAC,GAAG,MAAM,IAAAD,kBAAI,EAAClC,aAAa,EAAEuC,IAAI,CAAC;IAChDP,eAAG,CAACC,KAAK,CAAE,mBAAkBE,MAAO,EAAC,CAAC;IACtC,OAAOA,MAAM;EACf,CAAC,CAAC,OAAOO,CAAC,EAAE;IACV,MAAM,IAAIrB,KAAK,CAAE,mBAAkBrB,aAAc,IAAG2C,aAAI,CAACC,KAAK,CAACL,IAAI,CAAE,sBAAqBG,CAAC,CAACL,MAAM,IAAIK,CAAC,CAACG,OAAQ,EAAC,CAAC;EACpH;AACF;AAYA,eAAeC,SAAS,CAAEC,IAAI,EAAEC,QAAQ,EAAEC,kBAAkB,EAAE;EAC5D,MAAMC,cAAc,GAAGhC,eAAC,CAACiC,OAAO,CAACF,kBAAkB,CAAC,CACjDG,GAAG,CAAEC,CAAC,IAAM,GAAEA,CAAC,CAAC,CAAC,CAAE,IAAG5B,YAAY,CAAC4B,CAAC,CAAC,CAAC,CAAC,CAAE,EAAC,CAAC,CAC3CC,IAAI,CAAC,GAAG,CAAC;EACZ,OAAO,MAAMhB,OAAO,CAAC,CACnB,QAAQ,EAAES,IAAI,EACd,UAAU,EAAEC,QAAQ,EACpB,kBAAkB,EAAEE,cAAc,CACnC,CAAC;AACJ;AAYA,eAAeK,SAAS,CAAEP,QAAQ,EAAE/B,WAAW,EAAEuC,WAAW,EAAE;EAC5D,MAAMC,mBAAmB,GAAGzC,qBAAqB,CAACC,WAAW,CAAC;EAC9D,MAAMyC,MAAM,GAAGC,aAAI,CAACC,OAAO,CAACJ,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC;EACpE,KAAK,MAAM,CAACK,QAAQ,EAAEnC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE5B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAEC,UAAU,CAAC,CAAC,EAAE;IACtE,MAAM+D,GAAG,GAAI,gCAA+B,GACzC,iBAAgBd,QAAS,iBAAgBa,QAAS,iBAAgBJ,mBAAoB,GAAE;IAC3F,MAAMM,KAAK,GAAG,MAAMlC,eAAe,CAAC6B,MAAM,EAAEI,GAAG,CAAC;IAChD,IAAIE,QAAQ,CAACD,KAAK,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;MACzC,OAAOvC,MAAM;IACf;EACF;EACA,OAAO7B,YAAY;AACrB;AAGA,MAAMqE,UAAU,GAAG,CAAC,CAAC;AAYrBA,UAAU,CAACC,aAAa,GAAG,eAAeA,aAAa,CAAEnB,QAAQ,EAAEoB,UAAU,EAAEC,KAAK,EAAE;EACpF,MAAM,IAAI,CAACC,cAAc,CAACtB,QAAQ,EAAE;IAAC,CAACoB,UAAU,GAAGC;EAAK,CAAC,CAAC;AAC5D,CAAC;AAYDH,UAAU,CAACI,cAAc,GAAG,eAAeA,cAAc,CAAEtB,QAAQ,EAAEC,kBAAkB,EAAE;EACvFjB,eAAG,CAACC,KAAK,CAAE,uBAAsBe,QAAS,MAAK1B,IAAI,CAACC,SAAS,CAAC0B,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAE,EAAC,CAAC;EAC7F,MAAMH,SAAS,CAAC,IAAI,CAACC,IAAI,EAAEC,QAAQ,EAAEC,kBAAkB,CAAC;AAC1D,CAAC;AASDiB,UAAU,CAACK,aAAa,GAAG,eAAeA,aAAa,CAAEvB,QAAQ,EAAE/B,WAAW,EAAE;EAC9E,MAAMuD,MAAM,GAAG,MAAMjB,SAAS,CAACP,QAAQ,EAAE/B,WAAW,EAAE,IAAI,CAACwD,MAAM,EAAE,CAAC;EACpEzC,eAAG,CAACC,KAAK,CAAE,OAAMhB,WAAY,uBAAsB+B,QAAS,MAAKwB,MAAO,EAAC,CAAC;EAC1E,OAAOA,MAAM;AACf,CAAC;AAAC,eAEaN,UAAU;AAAA"}
@@ -8,7 +8,7 @@ exports.default = void 0;
8
8
  require("source-map-support/register");
9
9
  var _simulatorXcode = _interopRequireDefault(require("./simulator-xcode-9"));
10
10
  var _teen_process = require("teen_process");
11
- const WEBINSPECTOR_SOCKET_REGEXP = /\s+(\S+com\.apple\.webinspectord_sim\.socket)/;
11
+ var _logger = _interopRequireDefault(require("./logger"));
12
12
  class SimulatorXcode93 extends _simulatorXcode.default {
13
13
  constructor(udid, xcodeVersion) {
14
14
  super(udid, xcodeVersion);
@@ -18,23 +18,25 @@ class SimulatorXcode93 extends _simulatorXcode.default {
18
18
  if (this.webInspectorSocket) {
19
19
  return this.webInspectorSocket;
20
20
  }
21
- let {
21
+ const {
22
22
  stdout
23
23
  } = await (0, _teen_process.exec)('lsof', ['-aUc', 'launchd_sim']);
24
- for (let record of stdout.split('com.apple.CoreSimulator.SimDevice.')) {
25
- if (!record.includes(this.udid)) {
26
- continue;
27
- }
28
- const match = WEBINSPECTOR_SOCKET_REGEXP.exec(record);
29
- if (!match) {
30
- return null;
31
- }
32
- this.webInspectorSocket = match[1];
33
- return this.webInspectorSocket;
24
+ const udidPattern = `([0-9]{1,5}).+${this.udid}`;
25
+ const udidMatch = stdout.match(new RegExp(udidPattern));
26
+ if (!udidMatch) {
27
+ _logger.default.debug(`Failed to get Web Inspector socket. lsof result: ${stdout}`);
28
+ return null;
29
+ }
30
+ const pidPattern = `${udidMatch[1]}.+\\s+(\\S+com\\.apple\\.webinspectord_sim\\.socket)`;
31
+ const pidMatch = stdout.match(new RegExp(pidPattern));
32
+ if (!pidMatch) {
33
+ _logger.default.debug(`Failed to get Web Inspector socket. lsof result: ${stdout}`);
34
+ return null;
34
35
  }
35
- return null;
36
+ this.webInspectorSocket = pidMatch[1];
37
+ return this.webInspectorSocket;
36
38
  }
37
39
  }
38
40
  var _default = SimulatorXcode93;
39
41
  exports.default = _default;
40
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXRUJJTlNQRUNUT1JfU09DS0VUX1JFR0VYUCIsIlNpbXVsYXRvclhjb2RlOTMiLCJTaW11bGF0b3JYY29kZTkiLCJjb25zdHJ1Y3RvciIsInVkaWQiLCJ4Y29kZVZlcnNpb24iLCJ3ZWJJbnNwZWN0b3JTb2NrZXQiLCJnZXRXZWJJbnNwZWN0b3JTb2NrZXQiLCJzdGRvdXQiLCJleGVjIiwicmVjb3JkIiwic3BsaXQiLCJpbmNsdWRlcyIsIm1hdGNoIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3NpbXVsYXRvci14Y29kZS05LjMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNpbXVsYXRvclhjb2RlOSBmcm9tICcuL3NpbXVsYXRvci14Y29kZS05JztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuXG5cbi8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvTUVMNTV0LzFcbmNvbnN0IFdFQklOU1BFQ1RPUl9TT0NLRVRfUkVHRVhQID0gL1xccysoXFxTK2NvbVxcLmFwcGxlXFwud2ViaW5zcGVjdG9yZF9zaW1cXC5zb2NrZXQpLztcblxuY2xhc3MgU2ltdWxhdG9yWGNvZGU5MyBleHRlbmRzIFNpbXVsYXRvclhjb2RlOSB7XG4gIGNvbnN0cnVjdG9yICh1ZGlkLCB4Y29kZVZlcnNpb24pIHtcbiAgICBzdXBlcih1ZGlkLCB4Y29kZVZlcnNpb24pO1xuXG4gICAgdGhpcy53ZWJJbnNwZWN0b3JTb2NrZXQgPSBudWxsO1xuICB9XG5cbiAgLypcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBhc3luYyBnZXRXZWJJbnNwZWN0b3JTb2NrZXQgKCkge1xuICAgIGlmICh0aGlzLndlYkluc3BlY3RvclNvY2tldCkge1xuICAgICAgcmV0dXJuIHRoaXMud2ViSW5zcGVjdG9yU29ja2V0O1xuICAgIH1cblxuICAgIC8vIGxzb2YgLWFVYyBsYXVuY2hkX3NpbVxuICAgIC8vIGdpdmVzIGEgc2V0IG9mIHJlY29yZHMgbGlrZTpcbiAgICAvLyAgIGxhdW5jaGRfcyA2OTc2MCBpc2FhYyAgICAzdSAgdW5peCAweDU3YWE0ZmNlZWEzOTM3ZjMgICAgICAwdDAgICAgICAvcHJpdmF0ZS90bXAvY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltRGV2aWNlLkQ3MDgyQTVDLTM0QjUtNDc1Qy05OTRFLUEyMTUzNDQyM0I5RS9zeXNsb2dzb2NrXG4gICAgLy8gICBsYXVuY2hkX3MgNjk3NjAgaXNhYWMgICAgNXUgIHVuaXggMHg1N2FhNGZjZWVhMzk1ZjAzICAgICAgMHQwICAgICAgL3ByaXZhdGUvdG1wL2NvbS5hcHBsZS5sYXVuY2hkLjJCMnU4Q2tOOFMvTGlzdGVuZXJzXG4gICAgLy8gICBsYXVuY2hkX3MgNjk3NjAgaXNhYWMgICAgNnUgIHVuaXggMHg1N2FhNGZjZWVhMzkzNzJiICAgICAgMHQwICAgICAgLT4weDU3YWE0ZmNlZWEzOTM3ZjNcbiAgICAvLyAgIGxhdW5jaGRfcyA2OTc2MCBpc2FhYyAgICA4dSAgdW5peCAweDU3YWE0ZmNlZWEzOTU5OGIgICAgICAwdDAgICAgICAvcHJpdmF0ZS90bXAvY29tLmFwcGxlLmxhdW5jaGQuMmo1azFUTWg2aS9jb20uYXBwbGUud2ViaW5zcGVjdG9yZF9zaW0uc29ja2V0XG4gICAgLy8gICBsYXVuY2hkX3MgNjk3NjAgaXNhYWMgICAgOXUgIHVuaXggMHg1N2FhNGZjZWVhMzk0YzQzICAgICAgMHQwICAgICAgL3ByaXZhdGUvdG1wL2NvbS5hcHBsZS5sYXVuY2hkLjR6bTlKTzlLRXMvY29tLmFwcGxlLnRlc3RtYW5hZ2VyZC51bml4LWRvbWFpbi5zb2NrZXRcbiAgICAvLyAgIGxhdW5jaGRfcyA2OTc2MCBpc2FhYyAgIDEwdSAgdW5peCAweDU3YWE0ZmNlZWEzOTVmMDMgICAgICAwdDAgICAgICAvcHJpdmF0ZS90bXAvY29tLmFwcGxlLmxhdW5jaGQuMkIydThDa044Uy9MaXN0ZW5lcnNcbiAgICAvLyAgIGxhdW5jaGRfcyA2OTc2MCBpc2FhYyAgIDExdSAgdW5peCAweDU3YWE0ZmNlZWEzOTU5OGIgICAgICAwdDAgICAgICAvcHJpdmF0ZS90bXAvY29tLmFwcGxlLmxhdW5jaGQuMmo1azFUTWg2aS9jb20uYXBwbGUud2ViaW5zcGVjdG9yZF9zaW0uc29ja2V0XG4gICAgLy8gICBsYXVuY2hkX3MgNjk3NjAgaXNhYWMgICAxMnUgIHVuaXggMHg1N2FhNGZjZWVhMzk0YzQzICAgICAgMHQwICAgICAgL3ByaXZhdGUvdG1wL2NvbS5hcHBsZS5sYXVuY2hkLjR6bTlKTzlLRXMvY29tLmFwcGxlLnRlc3RtYW5hZ2VyZC51bml4LWRvbWFpbi5zb2NrZXRcbiAgICAvLyB0aGVzZSBfYXBwZWFyXyB0byBhbHdheXMgYmUgZ3JvdXBlZCB0b2dldGhlciAoc28sIHRoZSByZWNvcmRzIGZvciB0aGUgcGFydGljdWxhciBzaW0gYXJlIGFsbCBpbiBhIGdyb3VwLCBiZWZvcmUgdGhlIG5leHQgc2ltLCBldGMuKVxuICAgIC8vIHNvIHN0YXJ0aW5nIGZyb20gdGhlIGNvcnJlY3QgVURJRCwgd2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBwdWxsIHRoZSBuZXh0IHJlY29yZCB3aXRoIGBjb20uYXBwbGUud2ViaW5zcGVjdG9yZF9zaW0uc29ja2V0YCB0byBnZXQgdGhlIGNvcnJlY3Qgc29ja2V0XG4gICAgbGV0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygnbHNvZicsIFsnLWFVYycsICdsYXVuY2hkX3NpbSddKTtcbiAgICBmb3IgKGxldCByZWNvcmQgb2Ygc3Rkb3V0LnNwbGl0KCdjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2UuJykpIHtcbiAgICAgIGlmICghcmVjb3JkLmluY2x1ZGVzKHRoaXMudWRpZCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXRjaCA9IFdFQklOU1BFQ1RPUl9TT0NLRVRfUkVHRVhQLmV4ZWMocmVjb3JkKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLndlYkluc3BlY3RvclNvY2tldCA9IG1hdGNoWzFdO1xuICAgICAgcmV0dXJuIHRoaXMud2ViSW5zcGVjdG9yU29ja2V0O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNpbXVsYXRvclhjb2RlOTM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUlBLE1BQU1BLDBCQUEwQixHQUFHLCtDQUErQztBQUVsRixNQUFNQyxnQkFBZ0IsU0FBU0MsdUJBQWUsQ0FBQztFQUM3Q0MsV0FBVyxDQUFFQyxJQUFJLEVBQUVDLFlBQVksRUFBRTtJQUMvQixLQUFLLENBQUNELElBQUksRUFBRUMsWUFBWSxDQUFDO0lBRXpCLElBQUksQ0FBQ0Msa0JBQWtCLEdBQUcsSUFBSTtFQUNoQztFQUtBLE1BQU1DLHFCQUFxQixHQUFJO0lBQzdCLElBQUksSUFBSSxDQUFDRCxrQkFBa0IsRUFBRTtNQUMzQixPQUFPLElBQUksQ0FBQ0Esa0JBQWtCO0lBQ2hDO0lBY0EsSUFBSTtNQUFDRTtJQUFNLENBQUMsR0FBRyxNQUFNLElBQUFDLGtCQUFJLEVBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzFELEtBQUssSUFBSUMsTUFBTSxJQUFJRixNQUFNLENBQUNHLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFO01BQ3JFLElBQUksQ0FBQ0QsTUFBTSxDQUFDRSxRQUFRLENBQUMsSUFBSSxDQUFDUixJQUFJLENBQUMsRUFBRTtRQUMvQjtNQUNGO01BQ0EsTUFBTVMsS0FBSyxHQUFHYiwwQkFBMEIsQ0FBQ1MsSUFBSSxDQUFDQyxNQUFNLENBQUM7TUFDckQsSUFBSSxDQUFDRyxLQUFLLEVBQUU7UUFDVixPQUFPLElBQUk7TUFDYjtNQUNBLElBQUksQ0FBQ1Asa0JBQWtCLEdBQUdPLEtBQUssQ0FBQyxDQUFDLENBQUM7TUFDbEMsT0FBTyxJQUFJLENBQUNQLGtCQUFrQjtJQUNoQztJQUVBLE9BQU8sSUFBSTtFQUNiO0FBQ0Y7QUFBQyxlQUVjTCxnQkFBZ0I7QUFBQSJ9
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaW11bGF0b3JYY29kZTkzIiwiU2ltdWxhdG9yWGNvZGU5IiwiY29uc3RydWN0b3IiLCJ1ZGlkIiwieGNvZGVWZXJzaW9uIiwid2ViSW5zcGVjdG9yU29ja2V0IiwiZ2V0V2ViSW5zcGVjdG9yU29ja2V0Iiwic3Rkb3V0IiwiZXhlYyIsInVkaWRQYXR0ZXJuIiwidWRpZE1hdGNoIiwibWF0Y2giLCJSZWdFeHAiLCJsb2ciLCJkZWJ1ZyIsInBpZFBhdHRlcm4iLCJwaWRNYXRjaCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zaW11bGF0b3IteGNvZGUtOS4zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTaW11bGF0b3JYY29kZTkgZnJvbSAnLi9zaW11bGF0b3IteGNvZGUtOSc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuXG5cbmNsYXNzIFNpbXVsYXRvclhjb2RlOTMgZXh0ZW5kcyBTaW11bGF0b3JYY29kZTkge1xuICBjb25zdHJ1Y3RvciAodWRpZCwgeGNvZGVWZXJzaW9uKSB7XG4gICAgc3VwZXIodWRpZCwgeGNvZGVWZXJzaW9uKTtcblxuICAgIHRoaXMud2ViSW5zcGVjdG9yU29ja2V0ID0gbnVsbDtcbiAgfVxuXG4gIC8qXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgYXN5bmMgZ2V0V2ViSW5zcGVjdG9yU29ja2V0ICgpIHtcbiAgICBpZiAodGhpcy53ZWJJbnNwZWN0b3JTb2NrZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLndlYkluc3BlY3RvclNvY2tldDtcbiAgICB9XG5cbiAgICAvLyBsc29mIC1hVWMgbGF1bmNoZF9zaW0gZ2l2ZXMgYSBzZXQgb2YgcmVjb3JkcyBsaWtlXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0taW9zLXNpbXVsYXRvci9jb21taXQvYzAwOTAxYTlkZGVhMTc4YzU1ODFhN2E1N2Q5NmQ4Y2VlM2YxN2M1OSNkaWZmLTJiZTA5ZGQyZWEwMWNmZDZiYmJkNzNlMTBiYzQ2OGRhNzgyYTI5NzM2NWVlYzcwNjk5OWZjMzcwOWMwMTQ3OGRSMTAyXG4gICAgLy8gdGhlc2UgX2FwcGVhcl8gdG8gYWx3YXlzIGJlIGdyb3VwZWQgdG9nZXRoZXIgYnkgUElEIGZvciBlYWNoIHNpbXVsYXRvci5cbiAgICAvLyBUaGVyZWZvcmUsIGJ5IG9idGFpbmluZyBzaW11bGF0b3IgUElEIHdpdGggYW4gZXhwZWN0ZWQgc2ltdWxhdG9yIFVESUQsXG4gICAgLy8gd2UgY2FuIGdldCB0aGUgY29ycmVjdCBgY29tLmFwcGxlLndlYmluc3BlY3RvcmRfc2ltLnNvY2tldGBcbiAgICAvLyB3aXRob3V0IGRlcGVuZGluZyBvbiB0aGUgb3JkZXIgb2YgYGxzb2YgLWFVYyBsYXVuY2hkX3NpbWAgcmVzdWx0LlxuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygnbHNvZicsIFsnLWFVYycsICdsYXVuY2hkX3NpbSddKTtcbiAgICBjb25zdCB1ZGlkUGF0dGVybiA9IGAoWzAtOV17MSw1fSkuKyR7dGhpcy51ZGlkfWA7XG4gICAgY29uc3QgdWRpZE1hdGNoID0gc3Rkb3V0Lm1hdGNoKG5ldyBSZWdFeHAodWRpZFBhdHRlcm4pKTtcbiAgICBpZiAoIXVkaWRNYXRjaCkge1xuICAgICAgbG9nLmRlYnVnKGBGYWlsZWQgdG8gZ2V0IFdlYiBJbnNwZWN0b3Igc29ja2V0LiBsc29mIHJlc3VsdDogJHtzdGRvdXR9YCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwaWRQYXR0ZXJuID0gYCR7dWRpZE1hdGNoWzFdfS4rXFxcXHMrKFxcXFxTK2NvbVxcXFwuYXBwbGVcXFxcLndlYmluc3BlY3RvcmRfc2ltXFxcXC5zb2NrZXQpYDtcbiAgICBjb25zdCBwaWRNYXRjaCA9IHN0ZG91dC5tYXRjaChuZXcgUmVnRXhwKHBpZFBhdHRlcm4pKTtcbiAgICBpZiAoIXBpZE1hdGNoKSB7XG4gICAgICBsb2cuZGVidWcoYEZhaWxlZCB0byBnZXQgV2ViIEluc3BlY3RvciBzb2NrZXQuIGxzb2YgcmVzdWx0OiAke3N0ZG91dH1gKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aGlzLndlYkluc3BlY3RvclNvY2tldCA9IHBpZE1hdGNoWzFdO1xuICAgIHJldHVybiB0aGlzLndlYkluc3BlY3RvclNvY2tldDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaW11bGF0b3JYY29kZTkzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUdBLE1BQU1BLGdCQUFnQixTQUFTQyx1QkFBZSxDQUFDO0VBQzdDQyxXQUFXLENBQUVDLElBQUksRUFBRUMsWUFBWSxFQUFFO0lBQy9CLEtBQUssQ0FBQ0QsSUFBSSxFQUFFQyxZQUFZLENBQUM7SUFFekIsSUFBSSxDQUFDQyxrQkFBa0IsR0FBRyxJQUFJO0VBQ2hDO0VBS0EsTUFBTUMscUJBQXFCLEdBQUk7SUFDN0IsSUFBSSxJQUFJLENBQUNELGtCQUFrQixFQUFFO01BQzNCLE9BQU8sSUFBSSxDQUFDQSxrQkFBa0I7SUFDaEM7SUFRQSxNQUFNO01BQUNFO0lBQU0sQ0FBQyxHQUFHLE1BQU0sSUFBQUMsa0JBQUksRUFBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUQsTUFBTUMsV0FBVyxHQUFJLGlCQUFnQixJQUFJLENBQUNOLElBQUssRUFBQztJQUNoRCxNQUFNTyxTQUFTLEdBQUdILE1BQU0sQ0FBQ0ksS0FBSyxDQUFDLElBQUlDLE1BQU0sQ0FBQ0gsV0FBVyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDQyxTQUFTLEVBQUU7TUFDZEcsZUFBRyxDQUFDQyxLQUFLLENBQUUsb0RBQW1EUCxNQUFPLEVBQUMsQ0FBQztNQUN2RSxPQUFPLElBQUk7SUFDYjtJQUVBLE1BQU1RLFVBQVUsR0FBSSxHQUFFTCxTQUFTLENBQUMsQ0FBQyxDQUFFLHNEQUFxRDtJQUN4RixNQUFNTSxRQUFRLEdBQUdULE1BQU0sQ0FBQ0ksS0FBSyxDQUFDLElBQUlDLE1BQU0sQ0FBQ0csVUFBVSxDQUFDLENBQUM7SUFDckQsSUFBSSxDQUFDQyxRQUFRLEVBQUU7TUFDYkgsZUFBRyxDQUFDQyxLQUFLLENBQUUsb0RBQW1EUCxNQUFPLEVBQUMsQ0FBQztNQUN2RSxPQUFPLElBQUk7SUFDYjtJQUNBLElBQUksQ0FBQ0Ysa0JBQWtCLEdBQUdXLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckMsT0FBTyxJQUFJLENBQUNYLGtCQUFrQjtFQUNoQztBQUNGO0FBQUMsZUFFY0wsZ0JBQWdCO0FBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"simulator-xcode-9.3.js","names":["WEBINSPECTOR_SOCKET_REGEXP","SimulatorXcode93","SimulatorXcode9","constructor","udid","xcodeVersion","webInspectorSocket","getWebInspectorSocket","stdout","exec","record","split","includes","match"],"sources":["../../lib/simulator-xcode-9.3.js"],"sourcesContent":["import SimulatorXcode9 from './simulator-xcode-9';\nimport { exec } from 'teen_process';\n\n\n// https://regex101.com/r/MEL55t/1\nconst WEBINSPECTOR_SOCKET_REGEXP = /\\s+(\\S+com\\.apple\\.webinspectord_sim\\.socket)/;\n\nclass SimulatorXcode93 extends SimulatorXcode9 {\n constructor (udid, xcodeVersion) {\n super(udid, xcodeVersion);\n\n this.webInspectorSocket = null;\n }\n\n /*\n * @override\n */\n async getWebInspectorSocket () {\n if (this.webInspectorSocket) {\n return this.webInspectorSocket;\n }\n\n // lsof -aUc launchd_sim\n // gives a set of records like:\n // launchd_s 69760 isaac 3u unix 0x57aa4fceea3937f3 0t0 /private/tmp/com.apple.CoreSimulator.SimDevice.D7082A5C-34B5-475C-994E-A21534423B9E/syslogsock\n // launchd_s 69760 isaac 5u unix 0x57aa4fceea395f03 0t0 /private/tmp/com.apple.launchd.2B2u8CkN8S/Listeners\n // launchd_s 69760 isaac 6u unix 0x57aa4fceea39372b 0t0 ->0x57aa4fceea3937f3\n // launchd_s 69760 isaac 8u unix 0x57aa4fceea39598b 0t0 /private/tmp/com.apple.launchd.2j5k1TMh6i/com.apple.webinspectord_sim.socket\n // launchd_s 69760 isaac 9u unix 0x57aa4fceea394c43 0t0 /private/tmp/com.apple.launchd.4zm9JO9KEs/com.apple.testmanagerd.unix-domain.socket\n // launchd_s 69760 isaac 10u unix 0x57aa4fceea395f03 0t0 /private/tmp/com.apple.launchd.2B2u8CkN8S/Listeners\n // launchd_s 69760 isaac 11u unix 0x57aa4fceea39598b 0t0 /private/tmp/com.apple.launchd.2j5k1TMh6i/com.apple.webinspectord_sim.socket\n // launchd_s 69760 isaac 12u unix 0x57aa4fceea394c43 0t0 /private/tmp/com.apple.launchd.4zm9JO9KEs/com.apple.testmanagerd.unix-domain.socket\n // these _appear_ to always be grouped together (so, the records for the particular sim are all in a group, before the next sim, etc.)\n // so starting from the correct UDID, we ought to be able to pull the next record with `com.apple.webinspectord_sim.socket` to get the correct socket\n let {stdout} = await exec('lsof', ['-aUc', 'launchd_sim']);\n for (let record of stdout.split('com.apple.CoreSimulator.SimDevice.')) {\n if (!record.includes(this.udid)) {\n continue;\n }\n const match = WEBINSPECTOR_SOCKET_REGEXP.exec(record);\n if (!match) {\n return null;\n }\n this.webInspectorSocket = match[1];\n return this.webInspectorSocket;\n }\n\n return null;\n }\n}\n\nexport default SimulatorXcode93;\n"],"mappings":";;;;;;;;AAAA;AACA;AAIA,MAAMA,0BAA0B,GAAG,+CAA+C;AAElF,MAAMC,gBAAgB,SAASC,uBAAe,CAAC;EAC7CC,WAAW,CAAEC,IAAI,EAAEC,YAAY,EAAE;IAC/B,KAAK,CAACD,IAAI,EAAEC,YAAY,CAAC;IAEzB,IAAI,CAACC,kBAAkB,GAAG,IAAI;EAChC;EAKA,MAAMC,qBAAqB,GAAI;IAC7B,IAAI,IAAI,CAACD,kBAAkB,EAAE;MAC3B,OAAO,IAAI,CAACA,kBAAkB;IAChC;IAcA,IAAI;MAACE;IAAM,CAAC,GAAG,MAAM,IAAAC,kBAAI,EAAC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1D,KAAK,IAAIC,MAAM,IAAIF,MAAM,CAACG,KAAK,CAAC,oCAAoC,CAAC,EAAE;MACrE,IAAI,CAACD,MAAM,CAACE,QAAQ,CAAC,IAAI,CAACR,IAAI,CAAC,EAAE;QAC/B;MACF;MACA,MAAMS,KAAK,GAAGb,0BAA0B,CAACS,IAAI,CAACC,MAAM,CAAC;MACrD,IAAI,CAACG,KAAK,EAAE;QACV,OAAO,IAAI;MACb;MACA,IAAI,CAACP,kBAAkB,GAAGO,KAAK,CAAC,CAAC,CAAC;MAClC,OAAO,IAAI,CAACP,kBAAkB;IAChC;IAEA,OAAO,IAAI;EACb;AACF;AAAC,eAEcL,gBAAgB;AAAA"}
1
+ {"version":3,"file":"simulator-xcode-9.3.js","names":["SimulatorXcode93","SimulatorXcode9","constructor","udid","xcodeVersion","webInspectorSocket","getWebInspectorSocket","stdout","exec","udidPattern","udidMatch","match","RegExp","log","debug","pidPattern","pidMatch"],"sources":["../../lib/simulator-xcode-9.3.js"],"sourcesContent":["import SimulatorXcode9 from './simulator-xcode-9';\nimport { exec } from 'teen_process';\nimport log from './logger';\n\n\nclass SimulatorXcode93 extends SimulatorXcode9 {\n constructor (udid, xcodeVersion) {\n super(udid, xcodeVersion);\n\n this.webInspectorSocket = null;\n }\n\n /*\n * @override\n */\n async getWebInspectorSocket () {\n if (this.webInspectorSocket) {\n return this.webInspectorSocket;\n }\n\n // lsof -aUc launchd_sim gives a set of records like\n // https://github.com/appium/appium-ios-simulator/commit/c00901a9ddea178c5581a7a57d96d8cee3f17c59#diff-2be09dd2ea01cfd6bbbd73e10bc468da782a297365eec706999fc3709c01478dR102\n // these _appear_ to always be grouped together by PID for each simulator.\n // Therefore, by obtaining simulator PID with an expected simulator UDID,\n // we can get the correct `com.apple.webinspectord_sim.socket`\n // without depending on the order of `lsof -aUc launchd_sim` result.\n const {stdout} = await exec('lsof', ['-aUc', 'launchd_sim']);\n const udidPattern = `([0-9]{1,5}).+${this.udid}`;\n const udidMatch = stdout.match(new RegExp(udidPattern));\n if (!udidMatch) {\n log.debug(`Failed to get Web Inspector socket. lsof result: ${stdout}`);\n return null;\n }\n\n const pidPattern = `${udidMatch[1]}.+\\\\s+(\\\\S+com\\\\.apple\\\\.webinspectord_sim\\\\.socket)`;\n const pidMatch = stdout.match(new RegExp(pidPattern));\n if (!pidMatch) {\n log.debug(`Failed to get Web Inspector socket. lsof result: ${stdout}`);\n return null;\n }\n this.webInspectorSocket = pidMatch[1];\n return this.webInspectorSocket;\n }\n}\n\nexport default SimulatorXcode93;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AAGA,MAAMA,gBAAgB,SAASC,uBAAe,CAAC;EAC7CC,WAAW,CAAEC,IAAI,EAAEC,YAAY,EAAE;IAC/B,KAAK,CAACD,IAAI,EAAEC,YAAY,CAAC;IAEzB,IAAI,CAACC,kBAAkB,GAAG,IAAI;EAChC;EAKA,MAAMC,qBAAqB,GAAI;IAC7B,IAAI,IAAI,CAACD,kBAAkB,EAAE;MAC3B,OAAO,IAAI,CAACA,kBAAkB;IAChC;IAQA,MAAM;MAACE;IAAM,CAAC,GAAG,MAAM,IAAAC,kBAAI,EAAC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC5D,MAAMC,WAAW,GAAI,iBAAgB,IAAI,CAACN,IAAK,EAAC;IAChD,MAAMO,SAAS,GAAGH,MAAM,CAACI,KAAK,CAAC,IAAIC,MAAM,CAACH,WAAW,CAAC,CAAC;IACvD,IAAI,CAACC,SAAS,EAAE;MACdG,eAAG,CAACC,KAAK,CAAE,oDAAmDP,MAAO,EAAC,CAAC;MACvE,OAAO,IAAI;IACb;IAEA,MAAMQ,UAAU,GAAI,GAAEL,SAAS,CAAC,CAAC,CAAE,sDAAqD;IACxF,MAAMM,QAAQ,GAAGT,MAAM,CAACI,KAAK,CAAC,IAAIC,MAAM,CAACG,UAAU,CAAC,CAAC;IACrD,IAAI,CAACC,QAAQ,EAAE;MACbH,eAAG,CAACC,KAAK,CAAE,oDAAmDP,MAAO,EAAC,CAAC;MACvE,OAAO,IAAI;IACb;IACA,IAAI,CAACF,kBAAkB,GAAGW,QAAQ,CAAC,CAAC,CAAC;IACrC,OAAO,IAAI,CAACX,kBAAkB;EAChC;AACF;AAAC,eAEcL,gBAAgB;AAAA"}
@@ -78,18 +78,19 @@ async function execWix (args) {
78
78
  /**
79
79
  * Sets permissions for the given application
80
80
  *
81
+ * @param {string} udid - udid of the target simulator device.
81
82
  * @param {string} bundleId - bundle identifier of the target application.
82
83
  * @param {Object} permissionsMapping - An object, where keys ar service names
83
84
  * and values are corresponding state values. See https://github.com/wix/AppleSimulatorUtils
84
85
  * for more details on available service names and statuses.
85
86
  * @throws {Error} If there was an error while changing permissions.
86
87
  */
87
- async function setAccess (bundleId, permissionsMapping) {
88
+ async function setAccess (udid, bundleId, permissionsMapping) {
88
89
  const permissionsArg = _.toPairs(permissionsMapping)
89
90
  .map((x) => `${x[0]}=${formatStatus(x[1])}`)
90
91
  .join(',');
91
92
  return await execWix([
92
- '--byId', this.udid,
93
+ '--byId', udid,
93
94
  '--bundle', bundleId,
94
95
  '--setPermissions', permissionsArg,
95
96
  ]);
@@ -148,7 +149,7 @@ extensions.setPermission = async function setPermission (bundleId, permission, v
148
149
  */
149
150
  extensions.setPermissions = async function setPermissions (bundleId, permissionsMapping) {
150
151
  log.debug(`Setting access for '${bundleId}': ${JSON.stringify(permissionsMapping, null, 2)}`);
151
- await setAccess(bundleId, permissionsMapping);
152
+ await setAccess(this.udid, bundleId, permissionsMapping);
152
153
  };
153
154
 
154
155
  /**
@@ -1,10 +1,8 @@
1
1
  import SimulatorXcode9 from './simulator-xcode-9';
2
2
  import { exec } from 'teen_process';
3
+ import log from './logger';
3
4
 
4
5
 
5
- // https://regex101.com/r/MEL55t/1
6
- const WEBINSPECTOR_SOCKET_REGEXP = /\s+(\S+com\.apple\.webinspectord_sim\.socket)/;
7
-
8
6
  class SimulatorXcode93 extends SimulatorXcode9 {
9
7
  constructor (udid, xcodeVersion) {
10
8
  super(udid, xcodeVersion);
@@ -20,32 +18,28 @@ class SimulatorXcode93 extends SimulatorXcode9 {
20
18
  return this.webInspectorSocket;
21
19
  }
22
20
 
23
- // lsof -aUc launchd_sim
24
- // gives a set of records like:
25
- // launchd_s 69760 isaac 3u unix 0x57aa4fceea3937f3 0t0 /private/tmp/com.apple.CoreSimulator.SimDevice.D7082A5C-34B5-475C-994E-A21534423B9E/syslogsock
26
- // launchd_s 69760 isaac 5u unix 0x57aa4fceea395f03 0t0 /private/tmp/com.apple.launchd.2B2u8CkN8S/Listeners
27
- // launchd_s 69760 isaac 6u unix 0x57aa4fceea39372b 0t0 ->0x57aa4fceea3937f3
28
- // launchd_s 69760 isaac 8u unix 0x57aa4fceea39598b 0t0 /private/tmp/com.apple.launchd.2j5k1TMh6i/com.apple.webinspectord_sim.socket
29
- // launchd_s 69760 isaac 9u unix 0x57aa4fceea394c43 0t0 /private/tmp/com.apple.launchd.4zm9JO9KEs/com.apple.testmanagerd.unix-domain.socket
30
- // launchd_s 69760 isaac 10u unix 0x57aa4fceea395f03 0t0 /private/tmp/com.apple.launchd.2B2u8CkN8S/Listeners
31
- // launchd_s 69760 isaac 11u unix 0x57aa4fceea39598b 0t0 /private/tmp/com.apple.launchd.2j5k1TMh6i/com.apple.webinspectord_sim.socket
32
- // launchd_s 69760 isaac 12u unix 0x57aa4fceea394c43 0t0 /private/tmp/com.apple.launchd.4zm9JO9KEs/com.apple.testmanagerd.unix-domain.socket
33
- // these _appear_ to always be grouped together (so, the records for the particular sim are all in a group, before the next sim, etc.)
34
- // so starting from the correct UDID, we ought to be able to pull the next record with `com.apple.webinspectord_sim.socket` to get the correct socket
35
- let {stdout} = await exec('lsof', ['-aUc', 'launchd_sim']);
36
- for (let record of stdout.split('com.apple.CoreSimulator.SimDevice.')) {
37
- if (!record.includes(this.udid)) {
38
- continue;
39
- }
40
- const match = WEBINSPECTOR_SOCKET_REGEXP.exec(record);
41
- if (!match) {
42
- return null;
43
- }
44
- this.webInspectorSocket = match[1];
45
- return this.webInspectorSocket;
21
+ // lsof -aUc launchd_sim gives a set of records like
22
+ // https://github.com/appium/appium-ios-simulator/commit/c00901a9ddea178c5581a7a57d96d8cee3f17c59#diff-2be09dd2ea01cfd6bbbd73e10bc468da782a297365eec706999fc3709c01478dR102
23
+ // these _appear_ to always be grouped together by PID for each simulator.
24
+ // Therefore, by obtaining simulator PID with an expected simulator UDID,
25
+ // we can get the correct `com.apple.webinspectord_sim.socket`
26
+ // without depending on the order of `lsof -aUc launchd_sim` result.
27
+ const {stdout} = await exec('lsof', ['-aUc', 'launchd_sim']);
28
+ const udidPattern = `([0-9]{1,5}).+${this.udid}`;
29
+ const udidMatch = stdout.match(new RegExp(udidPattern));
30
+ if (!udidMatch) {
31
+ log.debug(`Failed to get Web Inspector socket. lsof result: ${stdout}`);
32
+ return null;
46
33
  }
47
34
 
48
- return null;
35
+ const pidPattern = `${udidMatch[1]}.+\\s+(\\S+com\\.apple\\.webinspectord_sim\\.socket)`;
36
+ const pidMatch = stdout.match(new RegExp(pidPattern));
37
+ if (!pidMatch) {
38
+ log.debug(`Failed to get Web Inspector socket. lsof result: ${stdout}`);
39
+ return null;
40
+ }
41
+ this.webInspectorSocket = pidMatch[1];
42
+ return this.webInspectorSocket;
49
43
  }
50
44
  }
51
45
 
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "ios",
8
8
  "simctl"
9
9
  ],
10
- "version": "5.0.1",
10
+ "version": "5.0.3",
11
11
  "author": "Appium Contributors",
12
12
  "license": "Apache-2.0",
13
13
  "repository": {