node-simctl 7.1.6 → 7.1.7

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 (56) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/lib/helpers.js +1 -2
  3. package/build/lib/helpers.js.map +1 -1
  4. package/build/lib/simctl.js +2 -6
  5. package/build/lib/simctl.js.map +1 -1
  6. package/build/lib/subcommands/addmedia.js +1 -2
  7. package/build/lib/subcommands/addmedia.js.map +1 -1
  8. package/build/lib/subcommands/appinfo.js +1 -2
  9. package/build/lib/subcommands/appinfo.js.map +1 -1
  10. package/build/lib/subcommands/boot.js +1 -2
  11. package/build/lib/subcommands/boot.js.map +1 -1
  12. package/build/lib/subcommands/bootstatus.js +1 -2
  13. package/build/lib/subcommands/bootstatus.js.map +1 -1
  14. package/build/lib/subcommands/create.js +2 -9
  15. package/build/lib/subcommands/create.js.map +1 -1
  16. package/build/lib/subcommands/delete.js +1 -2
  17. package/build/lib/subcommands/delete.js.map +1 -1
  18. package/build/lib/subcommands/erase.js +1 -2
  19. package/build/lib/subcommands/erase.js.map +1 -1
  20. package/build/lib/subcommands/get_app_container.js +1 -2
  21. package/build/lib/subcommands/get_app_container.js.map +1 -1
  22. package/build/lib/subcommands/getenv.js +1 -2
  23. package/build/lib/subcommands/getenv.js.map +1 -1
  24. package/build/lib/subcommands/install.js +1 -2
  25. package/build/lib/subcommands/install.js.map +1 -1
  26. package/build/lib/subcommands/io.js +1 -2
  27. package/build/lib/subcommands/io.js.map +1 -1
  28. package/build/lib/subcommands/keychain.js +1 -4
  29. package/build/lib/subcommands/keychain.js.map +1 -1
  30. package/build/lib/subcommands/launch.js +1 -2
  31. package/build/lib/subcommands/launch.js.map +1 -1
  32. package/build/lib/subcommands/list.js +1 -10
  33. package/build/lib/subcommands/list.js.map +1 -1
  34. package/build/lib/subcommands/location.js +1 -4
  35. package/build/lib/subcommands/location.js.map +1 -1
  36. package/build/lib/subcommands/openurl.js +1 -2
  37. package/build/lib/subcommands/openurl.js.map +1 -1
  38. package/build/lib/subcommands/pbcopy.js +1 -2
  39. package/build/lib/subcommands/pbcopy.js.map +1 -1
  40. package/build/lib/subcommands/pbpaste.js +1 -2
  41. package/build/lib/subcommands/pbpaste.js.map +1 -1
  42. package/build/lib/subcommands/privacy.js +1 -4
  43. package/build/lib/subcommands/privacy.js.map +1 -1
  44. package/build/lib/subcommands/push.js +1 -2
  45. package/build/lib/subcommands/push.js.map +1 -1
  46. package/build/lib/subcommands/shutdown.js +1 -2
  47. package/build/lib/subcommands/shutdown.js.map +1 -1
  48. package/build/lib/subcommands/spawn.js +1 -3
  49. package/build/lib/subcommands/spawn.js.map +1 -1
  50. package/build/lib/subcommands/terminate.js +1 -2
  51. package/build/lib/subcommands/terminate.js.map +1 -1
  52. package/build/lib/subcommands/ui.js +1 -3
  53. package/build/lib/subcommands/ui.js.map +1 -1
  54. package/build/lib/subcommands/uninstall.js +1 -2
  55. package/build/lib/subcommands/uninstall.js.map +1 -1
  56. package/package.json +2 -2
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  require("source-map-support/register");
8
8
  const commands = {};
9
-
10
9
  commands.getAppContainer = async function getAppContainer(bundleId, containerType = null) {
11
10
  const args = [this.requireUdid('get_app_container'), bundleId];
12
11
  if (containerType) {
@@ -21,4 +20,4 @@ commands.getAppContainer = async function getAppContainer(bundleId, containerTyp
21
20
  };
22
21
  var _default = commands;
23
22
  exports.default = _default;
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldEFwcENvbnRhaW5lciIsImJ1bmRsZUlkIiwiY29udGFpbmVyVHlwZSIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsInB1c2giLCJzdGRvdXQiLCJleGVjIiwidHJpbSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9nZXRfYXBwX2NvbnRhaW5lci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEdldCB0aGUgZnVsbCBwYXRoIHRvIHRoZSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIGNvbnRhaW5lclxuICogb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLiBOb3RlLCB0aGF0IHRoaXMgc3ViY29tbWFuZCB0aHJvd3NcbiAqIGFuIGVycm9yIGlmIGJ1bmRsZSBpZCBvZiBhIHN5c3RlbSBhcHBsaWNhdGlvbiBpcyBwcm92aWRlZCxcbiAqIGxpa2UgJ2NvbS5hcHBsZS5zcHJpbmdib2FyZCcuXG4gKiBJdCBpcyByZXF1aXJlZCB0aGF0IFNpbXVsYXRvciBpcyBpbiBfYm9vdGVkXyBzdGF0ZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBCdW5kbGUgaWRlbnRpZmllciBvZiBhbiBhcHBsaWNhdGlvbi5cbiAqIEBwYXJhbSB7P3N0cmluZ30gY29udGFpbmVyVHlwZSAtIFdoaWNoIGNvbnRhaW5lciB0eXBlIHRvIHJldHVybi4gUG9zc2libGUgdmFsdWVzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgJ2FwcCcsICdkYXRhJywgJ2dyb3VwcycsICc8QSBzcGVjaWZpYyBBcHAgR3JvdXAgY29udGFpbmVyPicuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAnYXBwJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gRnVsbCBwYXRoIHRvIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBjb250YWluZXIgb24gdGhlIGxvY2FsXG4gKiAgICAgICAgICAgICAgICAgIGZpbGUgc3lzdGVtLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuZ2V0QXBwQ29udGFpbmVyID0gYXN5bmMgZnVuY3Rpb24gZ2V0QXBwQ29udGFpbmVyIChidW5kbGVJZCwgY29udGFpbmVyVHlwZSA9IG51bGwpIHtcbiAgY29uc3QgYXJncyA9IFt0aGlzLnJlcXVpcmVVZGlkKCdnZXRfYXBwX2NvbnRhaW5lcicpLCBidW5kbGVJZF07XG4gIGlmIChjb250YWluZXJUeXBlKSB7XG4gICAgYXJncy5wdXNoKGNvbnRhaW5lclR5cGUpO1xuICB9XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdnZXRfYXBwX2NvbnRhaW5lcicsIHthcmdzfSk7XG4gIHJldHVybiAoc3Rkb3V0IHx8ICcnKS50cmltKCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7O0FBbUJuQkEsUUFBUSxDQUFDQyxlQUFlLEdBQUcsZUFBZUEsZUFBZSxDQUFFQyxRQUFRLEVBQUVDLGFBQWEsR0FBRyxJQUFJLEVBQUU7RUFDekYsTUFBTUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsRUFBRUgsUUFBUSxDQUFDO0VBQzlELElBQUlDLGFBQWEsRUFBRTtJQUNqQkMsSUFBSSxDQUFDRSxJQUFJLENBQUNILGFBQWEsQ0FBQztFQUMxQjtFQUNBLE1BQU07SUFBQ0k7RUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtJQUFDSjtFQUFJLENBQUMsQ0FBQztFQUM3RCxPQUFPLENBQUNHLE1BQU0sSUFBSSxFQUFFLEVBQUVFLElBQUksRUFBRTtBQUM5QixDQUFDO0FBQUMsZUFFYVQsUUFBUTtBQUFBIn0=
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldEFwcENvbnRhaW5lciIsImJ1bmRsZUlkIiwiY29udGFpbmVyVHlwZSIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsInB1c2giLCJzdGRvdXQiLCJleGVjIiwidHJpbSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9nZXRfYXBwX2NvbnRhaW5lci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEdldCB0aGUgZnVsbCBwYXRoIHRvIHRoZSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIGNvbnRhaW5lclxuICogb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLiBOb3RlLCB0aGF0IHRoaXMgc3ViY29tbWFuZCB0aHJvd3NcbiAqIGFuIGVycm9yIGlmIGJ1bmRsZSBpZCBvZiBhIHN5c3RlbSBhcHBsaWNhdGlvbiBpcyBwcm92aWRlZCxcbiAqIGxpa2UgJ2NvbS5hcHBsZS5zcHJpbmdib2FyZCcuXG4gKiBJdCBpcyByZXF1aXJlZCB0aGF0IFNpbXVsYXRvciBpcyBpbiBfYm9vdGVkXyBzdGF0ZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBCdW5kbGUgaWRlbnRpZmllciBvZiBhbiBhcHBsaWNhdGlvbi5cbiAqIEBwYXJhbSB7P3N0cmluZ30gY29udGFpbmVyVHlwZSAtIFdoaWNoIGNvbnRhaW5lciB0eXBlIHRvIHJldHVybi4gUG9zc2libGUgdmFsdWVzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgJ2FwcCcsICdkYXRhJywgJ2dyb3VwcycsICc8QSBzcGVjaWZpYyBBcHAgR3JvdXAgY29udGFpbmVyPicuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAnYXBwJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gRnVsbCBwYXRoIHRvIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBjb250YWluZXIgb24gdGhlIGxvY2FsXG4gKiAgICAgICAgICAgICAgICAgIGZpbGUgc3lzdGVtLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuZ2V0QXBwQ29udGFpbmVyID0gYXN5bmMgZnVuY3Rpb24gZ2V0QXBwQ29udGFpbmVyIChidW5kbGVJZCwgY29udGFpbmVyVHlwZSA9IG51bGwpIHtcbiAgY29uc3QgYXJncyA9IFt0aGlzLnJlcXVpcmVVZGlkKCdnZXRfYXBwX2NvbnRhaW5lcicpLCBidW5kbGVJZF07XG4gIGlmIChjb250YWluZXJUeXBlKSB7XG4gICAgYXJncy5wdXNoKGNvbnRhaW5lclR5cGUpO1xuICB9XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdnZXRfYXBwX2NvbnRhaW5lcicsIHthcmdzfSk7XG4gIHJldHVybiAoc3Rkb3V0IHx8ICcnKS50cmltKCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFtQm5CQSxRQUFRLENBQUNDLGVBQWUsR0FBRyxlQUFlQSxlQUFlLENBQUVDLFFBQVEsRUFBRUMsYUFBYSxHQUFHLElBQUksRUFBRTtFQUN6RixNQUFNQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFSCxRQUFRLENBQUM7RUFDOUQsSUFBSUMsYUFBYSxFQUFFO0lBQ2pCQyxJQUFJLENBQUNFLElBQUksQ0FBQ0gsYUFBYSxDQUFDO0VBQzFCO0VBQ0EsTUFBTTtJQUFDSTtFQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLG1CQUFtQixFQUFFO0lBQUNKO0VBQUksQ0FBQyxDQUFDO0VBQzdELE9BQU8sQ0FBQ0csTUFBTSxJQUFJLEVBQUUsRUFBRUUsSUFBSSxFQUFFO0FBQzlCLENBQUM7QUFBQyxlQUVhVCxRQUFRO0FBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"get_app_container.js","names":["commands","getAppContainer","bundleId","containerType","args","requireUdid","push","stdout","exec","trim"],"sources":["../../../lib/subcommands/get_app_container.js"],"sourcesContent":["const commands = {};\n\n/**\n * Get the full path to the particular application container\n * on the local file system. Note, that this subcommand throws\n * an error if bundle id of a system application is provided,\n * like 'com.apple.springboard'.\n * It is required that Simulator is in _booted_ state.\n *\n * @param {string} bundleId - Bundle identifier of an application.\n * @param {?string} containerType - Which container type to return. Possible values\n * are 'app', 'data', 'groups', '<A specific App Group container>'.\n * The default value is 'app'.\n * @return {string} Full path to the given application container on the local\n * file system.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.getAppContainer = async function getAppContainer (bundleId, containerType = null) {\n const args = [this.requireUdid('get_app_container'), bundleId];\n if (containerType) {\n args.push(containerType);\n }\n const {stdout} = await this.exec('get_app_container', {args});\n return (stdout || '').trim();\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AAmBnBA,QAAQ,CAACC,eAAe,GAAG,eAAeA,eAAe,CAAEC,QAAQ,EAAEC,aAAa,GAAG,IAAI,EAAE;EACzF,MAAMC,IAAI,GAAG,CAAC,IAAI,CAACC,WAAW,CAAC,mBAAmB,CAAC,EAAEH,QAAQ,CAAC;EAC9D,IAAIC,aAAa,EAAE;IACjBC,IAAI,CAACE,IAAI,CAACH,aAAa,CAAC;EAC1B;EACA,MAAM;IAACI;EAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,mBAAmB,EAAE;IAACJ;EAAI,CAAC,CAAC;EAC7D,OAAO,CAACG,MAAM,IAAI,EAAE,EAAEE,IAAI,EAAE;AAC9B,CAAC;AAAC,eAEaT,QAAQ;AAAA"}
1
+ {"version":3,"file":"get_app_container.js","names":["commands","getAppContainer","bundleId","containerType","args","requireUdid","push","stdout","exec","trim"],"sources":["../../../lib/subcommands/get_app_container.js"],"sourcesContent":["const commands = {};\n\n/**\n * Get the full path to the particular application container\n * on the local file system. Note, that this subcommand throws\n * an error if bundle id of a system application is provided,\n * like 'com.apple.springboard'.\n * It is required that Simulator is in _booted_ state.\n *\n * @param {string} bundleId - Bundle identifier of an application.\n * @param {?string} containerType - Which container type to return. Possible values\n * are 'app', 'data', 'groups', '<A specific App Group container>'.\n * The default value is 'app'.\n * @return {string} Full path to the given application container on the local\n * file system.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.getAppContainer = async function getAppContainer (bundleId, containerType = null) {\n const args = [this.requireUdid('get_app_container'), bundleId];\n if (containerType) {\n args.push(containerType);\n }\n const {stdout} = await this.exec('get_app_container', {args});\n return (stdout || '').trim();\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAmBnBA,QAAQ,CAACC,eAAe,GAAG,eAAeA,eAAe,CAAEC,QAAQ,EAAEC,aAAa,GAAG,IAAI,EAAE;EACzF,MAAMC,IAAI,GAAG,CAAC,IAAI,CAACC,WAAW,CAAC,mBAAmB,CAAC,EAAEH,QAAQ,CAAC;EAC9D,IAAIC,aAAa,EAAE;IACjBC,IAAI,CAACE,IAAI,CAACH,aAAa,CAAC;EAC1B;EACA,MAAM;IAACI;EAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,mBAAmB,EAAE;IAACJ;EAAI,CAAC,CAAC;EAC7D,OAAO,CAACG,MAAM,IAAI,EAAE,EAAEE,IAAI,EAAE;AAC9B,CAAC;AAAC,eAEaT,QAAQ;AAAA"}
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  require("source-map-support/register");
8
8
  const commands = {};
9
-
10
9
  commands.getEnv = async function getEnv(varName) {
11
10
  const {
12
11
  stdout,
@@ -19,4 +18,4 @@ commands.getEnv = async function getEnv(varName) {
19
18
  };
20
19
  var _default = commands;
21
20
  exports.default = _default;
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldEVudiIsInZhck5hbWUiLCJzdGRvdXQiLCJzdGRlcnIiLCJleGVjIiwiYXJncyIsInJlcXVpcmVVZGlkIiwibG9nRXJyb3JzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL2dldGVudi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgdmFsdWUgb2YgYSBTaW11bGF0b3IgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFyTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB0byBiZSByZXRyaWV2ZWRcbiAqIEByZXR1cm5zIHs/c3RyaW5nfSBUaGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIG9yIG51bGwgaWYgdGhlIGdpdmVuIHZhcmlhYmxlXG4gKiBpcyBub3QgcHJlc2VudCBpbiB0aGUgU2ltdWxhdG9yIGVudmlyb25tZW50XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHJ1bm5pbmcgdGhlIGNvbW1hbmRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLmdldEVudiA9IGFzeW5jIGZ1bmN0aW9uIGdldEVudiAodmFyTmFtZSkge1xuICBjb25zdCB7c3Rkb3V0LCBzdGRlcnJ9ID0gYXdhaXQgdGhpcy5leGVjKCdnZXRlbnYnLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ2dldGVudicpLCB2YXJOYW1lXSxcbiAgICBsb2dFcnJvcnM6IGZhbHNlLFxuICB9KTtcbiAgcmV0dXJuIHN0ZGVyciA/IG51bGwgOiBzdGRvdXQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7O0FBV25CQSxRQUFRLENBQUNDLE1BQU0sR0FBRyxlQUFlQSxNQUFNLENBQUVDLE9BQU8sRUFBRTtFQUNoRCxNQUFNO0lBQUNDLE1BQU07SUFBRUM7RUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxRQUFRLEVBQUU7SUFDakRDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFTCxPQUFPLENBQUM7SUFDM0NNLFNBQVMsRUFBRTtFQUNiLENBQUMsQ0FBQztFQUNGLE9BQU9KLE1BQU0sR0FBRyxJQUFJLEdBQUdELE1BQU07QUFDL0IsQ0FBQztBQUFDLGVBRWFILFFBQVE7QUFBQSJ9
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldEVudiIsInZhck5hbWUiLCJzdGRvdXQiLCJzdGRlcnIiLCJleGVjIiwiYXJncyIsInJlcXVpcmVVZGlkIiwibG9nRXJyb3JzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL2dldGVudi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgdmFsdWUgb2YgYSBTaW11bGF0b3IgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFyTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB0byBiZSByZXRyaWV2ZWRcbiAqIEByZXR1cm5zIHs/c3RyaW5nfSBUaGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIG9yIG51bGwgaWYgdGhlIGdpdmVuIHZhcmlhYmxlXG4gKiBpcyBub3QgcHJlc2VudCBpbiB0aGUgU2ltdWxhdG9yIGVudmlyb25tZW50XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHJ1bm5pbmcgdGhlIGNvbW1hbmRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLmdldEVudiA9IGFzeW5jIGZ1bmN0aW9uIGdldEVudiAodmFyTmFtZSkge1xuICBjb25zdCB7c3Rkb3V0LCBzdGRlcnJ9ID0gYXdhaXQgdGhpcy5leGVjKCdnZXRlbnYnLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ2dldGVudicpLCB2YXJOYW1lXSxcbiAgICBsb2dFcnJvcnM6IGZhbHNlLFxuICB9KTtcbiAgcmV0dXJuIHN0ZGVyciA/IG51bGwgOiBzdGRvdXQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFXbkJBLFFBQVEsQ0FBQ0MsTUFBTSxHQUFHLGVBQWVBLE1BQU0sQ0FBRUMsT0FBTyxFQUFFO0VBQ2hELE1BQU07SUFBQ0MsTUFBTTtJQUFFQztFQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFFBQVEsRUFBRTtJQUNqREMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUVMLE9BQU8sQ0FBQztJQUMzQ00sU0FBUyxFQUFFO0VBQ2IsQ0FBQyxDQUFDO0VBQ0YsT0FBT0osTUFBTSxHQUFHLElBQUksR0FBR0QsTUFBTTtBQUMvQixDQUFDO0FBQUMsZUFFYUgsUUFBUTtBQUFBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"getenv.js","names":["commands","getEnv","varName","stdout","stderr","exec","args","requireUdid","logErrors"],"sources":["../../../lib/subcommands/getenv.js"],"sourcesContent":["const commands = {};\n\n/**\n * Retrieves the value of a Simulator environment variable\n *\n * @param {string} varName - The name of the variable to be retrieved\n * @returns {?string} The value of the variable or null if the given variable\n * is not present in the Simulator environment\n * @throws {Error} If there was an error while running the command\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.getEnv = async function getEnv (varName) {\n const {stdout, stderr} = await this.exec('getenv', {\n args: [this.requireUdid('getenv'), varName],\n logErrors: false,\n });\n return stderr ? null : stdout;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AAWnBA,QAAQ,CAACC,MAAM,GAAG,eAAeA,MAAM,CAAEC,OAAO,EAAE;EAChD,MAAM;IAACC,MAAM;IAAEC;EAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE;IACjDC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,QAAQ,CAAC,EAAEL,OAAO,CAAC;IAC3CM,SAAS,EAAE;EACb,CAAC,CAAC;EACF,OAAOJ,MAAM,GAAG,IAAI,GAAGD,MAAM;AAC/B,CAAC;AAAC,eAEaH,QAAQ;AAAA"}
1
+ {"version":3,"file":"getenv.js","names":["commands","getEnv","varName","stdout","stderr","exec","args","requireUdid","logErrors"],"sources":["../../../lib/subcommands/getenv.js"],"sourcesContent":["const commands = {};\n\n/**\n * Retrieves the value of a Simulator environment variable\n *\n * @param {string} varName - The name of the variable to be retrieved\n * @returns {?string} The value of the variable or null if the given variable\n * is not present in the Simulator environment\n * @throws {Error} If there was an error while running the command\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.getEnv = async function getEnv (varName) {\n const {stdout, stderr} = await this.exec('getenv', {\n args: [this.requireUdid('getenv'), varName],\n logErrors: false,\n });\n return stderr ? null : stdout;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAWnBA,QAAQ,CAACC,MAAM,GAAG,eAAeA,MAAM,CAAEC,OAAO,EAAE;EAChD,MAAM;IAACC,MAAM;IAAEC;EAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE;IACjDC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,QAAQ,CAAC,EAAEL,OAAO,CAAC;IAC3CM,SAAS,EAAE;EACb,CAAC,CAAC;EACF,OAAOJ,MAAM,GAAG,IAAI,GAAGD,MAAM;AAC/B,CAAC;AAAC,eAEaH,QAAQ;AAAA"}
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  require("source-map-support/register");
8
8
  const commands = {};
9
-
10
9
  commands.installApp = async function installApp(appPath) {
11
10
  await this.exec('install', {
12
11
  args: [this.requireUdid('install'), appPath]
@@ -14,4 +13,4 @@ commands.installApp = async function installApp(appPath) {
14
13
  };
15
14
  var _default = commands;
16
15
  exports.default = _default;
17
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImluc3RhbGxBcHAiLCJhcHBQYXRoIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9pbnN0YWxsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogSW5zdGFsbCB0aGUgcGFydGljdWxhciBhcHBsaWNhdGlvbiBwYWNrYWdlIG9uIFNpbXVsYXRvci5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBQYXRoIC0gRnVsbCBwYXRoIHRvIC5hcHAgcGFja2FnZSwgd2hpY2ggaXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29pbmcgdG8gYmUgaW5zdGFsbGVkLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuaW5zdGFsbEFwcCA9IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGxBcHAgKGFwcFBhdGgpIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdpbnN0YWxsJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdpbnN0YWxsJyksIGFwcFBhdGhdLFxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQzs7QUFZbkJBLFFBQVEsQ0FBQ0MsVUFBVSxHQUFHLGVBQWVBLFVBQVUsQ0FBRUMsT0FBTyxFQUFFO0VBQ3hELE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQ3pCQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRUgsT0FBTztFQUM3QyxDQUFDLENBQUM7QUFDSixDQUFDO0FBQUMsZUFFYUYsUUFBUTtBQUFBIn0=
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImluc3RhbGxBcHAiLCJhcHBQYXRoIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9pbnN0YWxsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogSW5zdGFsbCB0aGUgcGFydGljdWxhciBhcHBsaWNhdGlvbiBwYWNrYWdlIG9uIFNpbXVsYXRvci5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBQYXRoIC0gRnVsbCBwYXRoIHRvIC5hcHAgcGFja2FnZSwgd2hpY2ggaXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29pbmcgdG8gYmUgaW5zdGFsbGVkLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuaW5zdGFsbEFwcCA9IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGxBcHAgKGFwcFBhdGgpIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdpbnN0YWxsJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdpbnN0YWxsJyksIGFwcFBhdGhdLFxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQztBQVluQkEsUUFBUSxDQUFDQyxVQUFVLEdBQUcsZUFBZUEsVUFBVSxDQUFFQyxPQUFPLEVBQUU7RUFDeEQsTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxTQUFTLEVBQUU7SUFDekJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFSCxPQUFPO0VBQzdDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFBQyxlQUVhRixRQUFRO0FBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","names":["commands","installApp","appPath","exec","args","requireUdid"],"sources":["../../../lib/subcommands/install.js"],"sourcesContent":["const commands = {};\n\n/**\n * Install the particular application package on Simulator.\n * It is required that Simulator is in _booted_ state.\n *\n * @param {string} appPath - Full path to .app package, which is\n * going to be installed.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.installApp = async function installApp (appPath) {\n await this.exec('install', {\n args: [this.requireUdid('install'), appPath],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AAYnBA,QAAQ,CAACC,UAAU,GAAG,eAAeA,UAAU,CAAEC,OAAO,EAAE;EACxD,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IACzBC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,SAAS,CAAC,EAAEH,OAAO;EAC7C,CAAC,CAAC;AACJ,CAAC;AAAC,eAEaF,QAAQ;AAAA"}
1
+ {"version":3,"file":"install.js","names":["commands","installApp","appPath","exec","args","requireUdid"],"sources":["../../../lib/subcommands/install.js"],"sourcesContent":["const commands = {};\n\n/**\n * Install the particular application package on Simulator.\n * It is required that Simulator is in _booted_ state.\n *\n * @param {string} appPath - Full path to .app package, which is\n * going to be installed.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.installApp = async function installApp (appPath) {\n await this.exec('install', {\n args: [this.requireUdid('install'), appPath],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAYnBA,QAAQ,CAACC,UAAU,GAAG,eAAeA,UAAU,CAAEC,OAAO,EAAE;EACxD,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IACzBC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,SAAS,CAAC,EAAEH,OAAO;EAC7C,CAAC,CAAC;AACJ,CAAC;AAAC,eAEaF,QAAQ;AAAA"}
@@ -15,7 +15,6 @@ var _bluebird = _interopRequireDefault(require("bluebird"));
15
15
  const commands = {};
16
16
  const rimrafAsync = _bluebird.default.promisify(_rimraf.default);
17
17
  const readFileAsync = _bluebird.default.promisify(_fs.default.readFile);
18
-
19
18
  commands.getScreenshot = async function getScreenshot() {
20
19
  const udid = this.requireUdid('io screenshot');
21
20
  const pathToScreenshotPng = _path.default.resolve(_os.default.tmpdir(), `${(0, _uuid.v4)()}.png`);
@@ -30,4 +29,4 @@ commands.getScreenshot = async function getScreenshot() {
30
29
  };
31
30
  var _default = commands;
32
31
  exports.default = _default;
33
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInJpbXJhZkFzeW5jIiwiQiIsInByb21pc2lmeSIsInJpbXJhZiIsInJlYWRGaWxlQXN5bmMiLCJmcyIsInJlYWRGaWxlIiwiZ2V0U2NyZWVuc2hvdCIsInVkaWQiLCJyZXF1aXJlVWRpZCIsInBhdGhUb1NjcmVlbnNob3RQbmciLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidXVpZFY0IiwiZXhlYyIsImFyZ3MiLCJ0b1N0cmluZyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9pby5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmltcmFmIGZyb20gJ3JpbXJhZic7XG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5jb25zdCByaW1yYWZBc3luYyA9IEIucHJvbWlzaWZ5KHJpbXJhZik7XG5jb25zdCByZWFkRmlsZUFzeW5jID0gQi5wcm9taXNpZnkoZnMucmVhZEZpbGUpO1xuXG4vKipcbiAqIEdldHMgYmFzZTY0IHNjcmVlbnNob3QgZm9yIGRldmljZVxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUuXG4gKlxuICogQHNpbmNlIFhjb2RlIFNESyA4LjFcbiAqIEByZXR1cm4ge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgU2ltdWxhdG9yIHNjcmVlbnNob3QuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5nZXRTY3JlZW5zaG90ID0gYXN5bmMgZnVuY3Rpb24gZ2V0U2NyZWVuc2hvdCAoKSB7XG4gIGNvbnN0IHVkaWQgPSB0aGlzLnJlcXVpcmVVZGlkKCdpbyBzY3JlZW5zaG90Jyk7XG4gIGNvbnN0IHBhdGhUb1NjcmVlbnNob3RQbmcgPSBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksIGAke3V1aWRWNCgpfS5wbmdgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmV4ZWMoJ2lvJywge1xuICAgICAgYXJnczogW3VkaWQsICdzY3JlZW5zaG90JywgcGF0aFRvU2NyZWVuc2hvdFBuZ10sXG4gICAgfSk7XG4gICAgcmV0dXJuIChhd2FpdCByZWFkRmlsZUFzeW5jKHBhdGhUb1NjcmVlbnNob3RQbmcpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcmltcmFmQXN5bmMocGF0aFRvU2NyZWVuc2hvdFBuZyk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDbkIsTUFBTUMsV0FBVyxHQUFHQyxpQkFBQyxDQUFDQyxTQUFTLENBQUNDLGVBQU0sQ0FBQztBQUN2QyxNQUFNQyxhQUFhLEdBQUdILGlCQUFDLENBQUNDLFNBQVMsQ0FBQ0csV0FBRSxDQUFDQyxRQUFRLENBQUM7O0FBWTlDUCxRQUFRLENBQUNRLGFBQWEsR0FBRyxlQUFlQSxhQUFhLEdBQUk7RUFDdkQsTUFBTUMsSUFBSSxHQUFHLElBQUksQ0FBQ0MsV0FBVyxDQUFDLGVBQWUsQ0FBQztFQUM5QyxNQUFNQyxtQkFBbUIsR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQUNDLFdBQUUsQ0FBQ0MsTUFBTSxFQUFFLEVBQUcsR0FBRSxJQUFBQyxRQUFNLEdBQUcsTUFBSyxDQUFDO0VBQ3hFLElBQUk7SUFDRixNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLElBQUksRUFBRTtNQUNwQkMsSUFBSSxFQUFFLENBQUNULElBQUksRUFBRSxZQUFZLEVBQUVFLG1CQUFtQjtJQUNoRCxDQUFDLENBQUM7SUFDRixPQUFPLENBQUMsTUFBTU4sYUFBYSxDQUFDTSxtQkFBbUIsQ0FBQyxFQUFFUSxRQUFRLENBQUMsUUFBUSxDQUFDO0VBQ3RFLENBQUMsU0FBUztJQUNSLE1BQU1sQixXQUFXLENBQUNVLG1CQUFtQixDQUFDO0VBQ3hDO0FBQ0YsQ0FBQztBQUFDLGVBRWFYLFFBQVE7QUFBQSJ9
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInJpbXJhZkFzeW5jIiwiQiIsInByb21pc2lmeSIsInJpbXJhZiIsInJlYWRGaWxlQXN5bmMiLCJmcyIsInJlYWRGaWxlIiwiZ2V0U2NyZWVuc2hvdCIsInVkaWQiLCJyZXF1aXJlVWRpZCIsInBhdGhUb1NjcmVlbnNob3RQbmciLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidXVpZFY0IiwiZXhlYyIsImFyZ3MiLCJ0b1N0cmluZyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9pby5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmltcmFmIGZyb20gJ3JpbXJhZic7XG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5jb25zdCByaW1yYWZBc3luYyA9IEIucHJvbWlzaWZ5KHJpbXJhZik7XG5jb25zdCByZWFkRmlsZUFzeW5jID0gQi5wcm9taXNpZnkoZnMucmVhZEZpbGUpO1xuXG4vKipcbiAqIEdldHMgYmFzZTY0IHNjcmVlbnNob3QgZm9yIGRldmljZVxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUuXG4gKlxuICogQHNpbmNlIFhjb2RlIFNESyA4LjFcbiAqIEByZXR1cm4ge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgU2ltdWxhdG9yIHNjcmVlbnNob3QuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5nZXRTY3JlZW5zaG90ID0gYXN5bmMgZnVuY3Rpb24gZ2V0U2NyZWVuc2hvdCAoKSB7XG4gIGNvbnN0IHVkaWQgPSB0aGlzLnJlcXVpcmVVZGlkKCdpbyBzY3JlZW5zaG90Jyk7XG4gIGNvbnN0IHBhdGhUb1NjcmVlbnNob3RQbmcgPSBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksIGAke3V1aWRWNCgpfS5wbmdgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmV4ZWMoJ2lvJywge1xuICAgICAgYXJnczogW3VkaWQsICdzY3JlZW5zaG90JywgcGF0aFRvU2NyZWVuc2hvdFBuZ10sXG4gICAgfSk7XG4gICAgcmV0dXJuIChhd2FpdCByZWFkRmlsZUFzeW5jKHBhdGhUb1NjcmVlbnNob3RQbmcpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcmltcmFmQXN5bmMocGF0aFRvU2NyZWVuc2hvdFBuZyk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDbkIsTUFBTUMsV0FBVyxHQUFHQyxpQkFBQyxDQUFDQyxTQUFTLENBQUNDLGVBQU0sQ0FBQztBQUN2QyxNQUFNQyxhQUFhLEdBQUdILGlCQUFDLENBQUNDLFNBQVMsQ0FBQ0csV0FBRSxDQUFDQyxRQUFRLENBQUM7QUFZOUNQLFFBQVEsQ0FBQ1EsYUFBYSxHQUFHLGVBQWVBLGFBQWEsR0FBSTtFQUN2RCxNQUFNQyxJQUFJLEdBQUcsSUFBSSxDQUFDQyxXQUFXLENBQUMsZUFBZSxDQUFDO0VBQzlDLE1BQU1DLG1CQUFtQixHQUFHQyxhQUFJLENBQUNDLE9BQU8sQ0FBQ0MsV0FBRSxDQUFDQyxNQUFNLEVBQUUsRUFBRyxHQUFFLElBQUFDLFFBQU0sR0FBRyxNQUFLLENBQUM7RUFDeEUsSUFBSTtJQUNGLE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsSUFBSSxFQUFFO01BQ3BCQyxJQUFJLEVBQUUsQ0FBQ1QsSUFBSSxFQUFFLFlBQVksRUFBRUUsbUJBQW1CO0lBQ2hELENBQUMsQ0FBQztJQUNGLE9BQU8sQ0FBQyxNQUFNTixhQUFhLENBQUNNLG1CQUFtQixDQUFDLEVBQUVRLFFBQVEsQ0FBQyxRQUFRLENBQUM7RUFDdEUsQ0FBQyxTQUFTO0lBQ1IsTUFBTWxCLFdBQVcsQ0FBQ1UsbUJBQW1CLENBQUM7RUFDeEM7QUFDRixDQUFDO0FBQUMsZUFFYVgsUUFBUTtBQUFBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"io.js","names":["commands","rimrafAsync","B","promisify","rimraf","readFileAsync","fs","readFile","getScreenshot","udid","requireUdid","pathToScreenshotPng","path","resolve","os","tmpdir","uuidV4","exec","args","toString"],"sources":["../../../lib/subcommands/io.js"],"sourcesContent":["import rimraf from 'rimraf';\nimport { v4 as uuidV4 } from 'uuid';\nimport path from 'path';\nimport os from 'os';\nimport fs from 'fs';\nimport B from 'bluebird';\n\nconst commands = {};\nconst rimrafAsync = B.promisify(rimraf);\nconst readFileAsync = B.promisify(fs.readFile);\n\n/**\n * Gets base64 screenshot for device\n * It is required that Simulator is in _booted_ state.\n *\n * @since Xcode SDK 8.1\n * @return {string} Base64-encoded Simulator screenshot.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.getScreenshot = async function getScreenshot () {\n const udid = this.requireUdid('io screenshot');\n const pathToScreenshotPng = path.resolve(os.tmpdir(), `${uuidV4()}.png`);\n try {\n await this.exec('io', {\n args: [udid, 'screenshot', pathToScreenshotPng],\n });\n return (await readFileAsync(pathToScreenshotPng)).toString('base64');\n } finally {\n await rimrafAsync(pathToScreenshotPng);\n }\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAMC,WAAW,GAAGC,iBAAC,CAACC,SAAS,CAACC,eAAM,CAAC;AACvC,MAAMC,aAAa,GAAGH,iBAAC,CAACC,SAAS,CAACG,WAAE,CAACC,QAAQ,CAAC;;AAY9CP,QAAQ,CAACQ,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAMC,IAAI,GAAG,IAAI,CAACC,WAAW,CAAC,eAAe,CAAC;EAC9C,MAAMC,mBAAmB,GAAGC,aAAI,CAACC,OAAO,CAACC,WAAE,CAACC,MAAM,EAAE,EAAG,GAAE,IAAAC,QAAM,GAAG,MAAK,CAAC;EACxE,IAAI;IACF,MAAM,IAAI,CAACC,IAAI,CAAC,IAAI,EAAE;MACpBC,IAAI,EAAE,CAACT,IAAI,EAAE,YAAY,EAAEE,mBAAmB;IAChD,CAAC,CAAC;IACF,OAAO,CAAC,MAAMN,aAAa,CAACM,mBAAmB,CAAC,EAAEQ,QAAQ,CAAC,QAAQ,CAAC;EACtE,CAAC,SAAS;IACR,MAAMlB,WAAW,CAACU,mBAAmB,CAAC;EACxC;AACF,CAAC;AAAC,eAEaX,QAAQ;AAAA"}
1
+ {"version":3,"file":"io.js","names":["commands","rimrafAsync","B","promisify","rimraf","readFileAsync","fs","readFile","getScreenshot","udid","requireUdid","pathToScreenshotPng","path","resolve","os","tmpdir","uuidV4","exec","args","toString"],"sources":["../../../lib/subcommands/io.js"],"sourcesContent":["import rimraf from 'rimraf';\nimport { v4 as uuidV4 } from 'uuid';\nimport path from 'path';\nimport os from 'os';\nimport fs from 'fs';\nimport B from 'bluebird';\n\nconst commands = {};\nconst rimrafAsync = B.promisify(rimraf);\nconst readFileAsync = B.promisify(fs.readFile);\n\n/**\n * Gets base64 screenshot for device\n * It is required that Simulator is in _booted_ state.\n *\n * @since Xcode SDK 8.1\n * @return {string} Base64-encoded Simulator screenshot.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.getScreenshot = async function getScreenshot () {\n const udid = this.requireUdid('io screenshot');\n const pathToScreenshotPng = path.resolve(os.tmpdir(), `${uuidV4()}.png`);\n try {\n await this.exec('io', {\n args: [udid, 'screenshot', pathToScreenshotPng],\n });\n return (await readFileAsync(pathToScreenshotPng)).toString('base64');\n } finally {\n await rimrafAsync(pathToScreenshotPng);\n }\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAMC,WAAW,GAAGC,iBAAC,CAACC,SAAS,CAACC,eAAM,CAAC;AACvC,MAAMC,aAAa,GAAGH,iBAAC,CAACC,SAAS,CAACG,WAAE,CAACC,QAAQ,CAAC;AAY9CP,QAAQ,CAACQ,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAMC,IAAI,GAAG,IAAI,CAACC,WAAW,CAAC,eAAe,CAAC;EAC9C,MAAMC,mBAAmB,GAAGC,aAAI,CAACC,OAAO,CAACC,WAAE,CAACC,MAAM,EAAE,EAAG,GAAE,IAAAC,QAAM,GAAG,MAAK,CAAC;EACxE,IAAI;IACF,MAAM,IAAI,CAACC,IAAI,CAAC,IAAI,EAAE;MACpBC,IAAI,EAAE,CAACT,IAAI,EAAE,YAAY,EAAEE,mBAAmB;IAChD,CAAC,CAAC;IACF,OAAO,CAAC,MAAMN,aAAa,CAACM,mBAAmB,CAAC,EAAEQ,QAAQ,CAAC,QAAQ,CAAC;EACtE,CAAC,SAAS;IACR,MAAMlB,WAAW,CAACU,mBAAmB,CAAC;EACxC;AACF,CAAC;AAAC,eAEaX,QAAQ;AAAA"}
@@ -29,7 +29,6 @@ async function handleRawPayload(payload, onPayloadStored) {
29
29
  await rimrafAsync(filePath);
30
30
  }
31
31
  }
32
-
33
32
  commands.addRootCertificate = async function addRootCertificate(cert, opts = {}) {
34
33
  const {
35
34
  raw = false
@@ -43,7 +42,6 @@ commands.addRootCertificate = async function addRootCertificate(cert, opts = {})
43
42
  await execMethod(cert);
44
43
  }
45
44
  };
46
-
47
45
  commands.addCertificate = async function addCertificate(cert, opts = {}) {
48
46
  const {
49
47
  raw = false
@@ -57,7 +55,6 @@ commands.addCertificate = async function addCertificate(cert, opts = {}) {
57
55
  await execMethod(cert);
58
56
  }
59
57
  };
60
-
61
58
  commands.resetKeychain = async function resetKeychain() {
62
59
  await this.exec('keychain', {
63
60
  args: [this.requireUdid('keychain reset'), 'reset']
@@ -65,4 +62,4 @@ commands.resetKeychain = async function resetKeychain() {
65
62
  };
66
63
  var _default = commands;
67
64
  exports.default = _default;
68
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInJpbXJhZkFzeW5jIiwiQiIsInByb21pc2lmeSIsInJpbXJhZiIsIndyaXRlRmlsZUFzeW5jIiwiZnMiLCJ3cml0ZUZpbGUiLCJoYW5kbGVSYXdQYXlsb2FkIiwicGF5bG9hZCIsIm9uUGF5bG9hZFN0b3JlZCIsImZpbGVQYXRoIiwicGF0aCIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInV1aWRWNCIsIl8iLCJpc0J1ZmZlciIsImFkZFJvb3RDZXJ0aWZpY2F0ZSIsImNlcnQiLCJvcHRzIiwicmF3IiwiZXhlY01ldGhvZCIsImNlcnRQYXRoIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImFkZENlcnRpZmljYXRlIiwicmVzZXRLZXljaGFpbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9rZXljaGFpbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IHY0IGFzIHV1aWRWNCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHJpbXJhZiBmcm9tICdyaW1yYWYnO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuY29uc3QgcmltcmFmQXN5bmMgPSBCLnByb21pc2lmeShyaW1yYWYpO1xuY29uc3Qgd3JpdGVGaWxlQXN5bmMgPSBCLnByb21pc2lmeShmcy53cml0ZUZpbGUpO1xuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVSYXdQYXlsb2FkIChwYXlsb2FkLCBvblBheWxvYWRTdG9yZWQpIHtcbiAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksIGAke3V1aWRWNCgpfS5wZW1gKTtcbiAgdHJ5IHtcbiAgICBpZiAoXy5pc0J1ZmZlcihwYXlsb2FkKSkge1xuICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoZmlsZVBhdGgsIHBheWxvYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhmaWxlUGF0aCwgcGF5bG9hZCwgJ3V0ZjgnKTtcbiAgICB9XG4gICAgYXdhaXQgb25QYXlsb2FkU3RvcmVkKGZpbGVQYXRoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCByaW1yYWZBc3luYyhmaWxlUGF0aCk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENlcnRPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJhdyBbZmFsc2VdIC0gd2hldGhlciB0aGUgYGNlcnRgIGFyZ3VtZW50XG4gKiBpcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtIG9yXG4gKiBhIHJhdyBjZXJ0aWZpY2F0ZSBjb250ZW50XG4gKi9cblxuLyoqXG4gKiBBZGRzIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZSB0byB0aGUgVHJ1c3RlZCBSb290IFN0b3JlIG9uIHRoZSBzaW11bGF0b3JcbiAqXG4gKiBAc2luY2UgWGNvZGUgMTEuNCBTREtcbiAqIEBwYXJhbSB7c3RyaW5nfSBjZXJ0IHRoZSBmdWxsIHBhdGggdG8gYSB2YWxpZCAuY2VydCBmaWxlIGNvbnRhaW5pbmdcbiAqIHRoZSBjZXJ0aWZpY2F0ZSBjb250ZW50IG9yIHRoZSBjZXJ0aWZpY2F0ZSBjb250ZW50IGl0c2VsZiwgZGVwZW5kaW5nIG9uXG4gKiBvcHRpb25zXG4gKiBAcGFyYW0ge0NlcnRPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlIGN1cnJlbnQgU0RLIHZlcnNpb24gZG9lcyBub3Qgc3VwcG9ydCB0aGUgY29tbWFuZFxuICogb3IgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGFkZGluZyB0aGUgY2VydGlmaWNhdGVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLmFkZFJvb3RDZXJ0aWZpY2F0ZSA9IGFzeW5jIGZ1bmN0aW9uIGFkZFJvb3RDZXJ0aWZpY2F0ZSAoY2VydCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICByYXcgPSBmYWxzZSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGV4ZWNNZXRob2QgPSBhc3luYyAoY2VydFBhdGgpID0+IGF3YWl0IHRoaXMuZXhlYygna2V5Y2hhaW4nLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ2tleWNoYWluIGFkZC1yb290LWNlcnQnKSwgJ2FkZC1yb290LWNlcnQnLCBjZXJ0UGF0aF0sXG4gIH0pO1xuICBpZiAocmF3KSB7XG4gICAgYXdhaXQgaGFuZGxlUmF3UGF5bG9hZChjZXJ0LCBleGVjTWV0aG9kKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBleGVjTWV0aG9kKGNlcnQpO1xuICB9XG59O1xuXG4vKipcbiAqIEFkZHMgdGhlIGdpdmVuIGNlcnRpZmljYXRlIHRvIHRoZSBLZXljaGFpbiBTdG9yZSBvbiB0aGUgc2ltdWxhdG9yXG4gKlxuICogQHNpbmNlIFhjb2RlIDExLjQgU0RLXG4gKiBAcGFyYW0ge3N0cmluZ30gY2VydCB0aGUgZnVsbCBwYXRoIHRvIGEgdmFsaWQgLmNlcnQgZmlsZSBjb250YWluaW5nXG4gKiB0aGUgY2VydGlmaWNhdGUgY29udGVudCBvciB0aGUgY2VydGlmaWNhdGUgY29udGVudCBpdHNlbGYsIGRlcGVuZGluZyBvblxuICogb3B0aW9uc1xuICogQHBhcmFtIHtDZXJ0T3B0aW9uc30gb3B0c1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBhZGRpbmcgdGhlIGNlcnRpZmljYXRlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5hZGRDZXJ0aWZpY2F0ZSA9IGFzeW5jIGZ1bmN0aW9uIGFkZENlcnRpZmljYXRlIChjZXJ0LCBvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHJhdyA9IGZhbHNlLFxuICB9ID0gb3B0cztcbiAgY29uc3QgZXhlY01ldGhvZCA9IGFzeW5jIChjZXJ0UGF0aCkgPT4gYXdhaXQgdGhpcy5leGVjKCdrZXljaGFpbicsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgna2V5Y2hhaW4gYWRkLWNlcnQnKSwgJ2FkZC1jZXJ0JywgY2VydFBhdGhdLFxuICB9KTtcbiAgaWYgKHJhdykge1xuICAgIGF3YWl0IGhhbmRsZVJhd1BheWxvYWQoY2VydCwgZXhlY01ldGhvZCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgZXhlY01ldGhvZChjZXJ0KTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZXNldHMgdGhlIHNpbXVsYXRvciBrZXljaGFpblxuICpcbiAqIEBzaW5jZSBYY29kZSAxMS40IFNES1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZXNldHRpbmcgdGhlIGtleWNoYWluXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5yZXNldEtleWNoYWluID0gYXN5bmMgZnVuY3Rpb24gcmVzZXRLZXljaGFpbiAoKSB7XG4gIGF3YWl0IHRoaXMuZXhlYygna2V5Y2hhaW4nLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ2tleWNoYWluIHJlc2V0JyksICdyZXNldCddLFxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FB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
65
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInJpbXJhZkFzeW5jIiwiQiIsInByb21pc2lmeSIsInJpbXJhZiIsIndyaXRlRmlsZUFzeW5jIiwiZnMiLCJ3cml0ZUZpbGUiLCJoYW5kbGVSYXdQYXlsb2FkIiwicGF5bG9hZCIsIm9uUGF5bG9hZFN0b3JlZCIsImZpbGVQYXRoIiwicGF0aCIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInV1aWRWNCIsIl8iLCJpc0J1ZmZlciIsImFkZFJvb3RDZXJ0aWZpY2F0ZSIsImNlcnQiLCJvcHRzIiwicmF3IiwiZXhlY01ldGhvZCIsImNlcnRQYXRoIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImFkZENlcnRpZmljYXRlIiwicmVzZXRLZXljaGFpbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9rZXljaGFpbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IHY0IGFzIHV1aWRWNCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHJpbXJhZiBmcm9tICdyaW1yYWYnO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuY29uc3QgcmltcmFmQXN5bmMgPSBCLnByb21pc2lmeShyaW1yYWYpO1xuY29uc3Qgd3JpdGVGaWxlQXN5bmMgPSBCLnByb21pc2lmeShmcy53cml0ZUZpbGUpO1xuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVSYXdQYXlsb2FkIChwYXlsb2FkLCBvblBheWxvYWRTdG9yZWQpIHtcbiAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksIGAke3V1aWRWNCgpfS5wZW1gKTtcbiAgdHJ5IHtcbiAgICBpZiAoXy5pc0J1ZmZlcihwYXlsb2FkKSkge1xuICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoZmlsZVBhdGgsIHBheWxvYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhmaWxlUGF0aCwgcGF5bG9hZCwgJ3V0ZjgnKTtcbiAgICB9XG4gICAgYXdhaXQgb25QYXlsb2FkU3RvcmVkKGZpbGVQYXRoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCByaW1yYWZBc3luYyhmaWxlUGF0aCk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENlcnRPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJhdyBbZmFsc2VdIC0gd2hldGhlciB0aGUgYGNlcnRgIGFyZ3VtZW50XG4gKiBpcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtIG9yXG4gKiBhIHJhdyBjZXJ0aWZpY2F0ZSBjb250ZW50XG4gKi9cblxuLyoqXG4gKiBBZGRzIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZSB0byB0aGUgVHJ1c3RlZCBSb290IFN0b3JlIG9uIHRoZSBzaW11bGF0b3JcbiAqXG4gKiBAc2luY2UgWGNvZGUgMTEuNCBTREtcbiAqIEBwYXJhbSB7c3RyaW5nfSBjZXJ0IHRoZSBmdWxsIHBhdGggdG8gYSB2YWxpZCAuY2VydCBmaWxlIGNvbnRhaW5pbmdcbiAqIHRoZSBjZXJ0aWZpY2F0ZSBjb250ZW50IG9yIHRoZSBjZXJ0aWZpY2F0ZSBjb250ZW50IGl0c2VsZiwgZGVwZW5kaW5nIG9uXG4gKiBvcHRpb25zXG4gKiBAcGFyYW0ge0NlcnRPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlIGN1cnJlbnQgU0RLIHZlcnNpb24gZG9lcyBub3Qgc3VwcG9ydCB0aGUgY29tbWFuZFxuICogb3IgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGFkZGluZyB0aGUgY2VydGlmaWNhdGVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLmFkZFJvb3RDZXJ0aWZpY2F0ZSA9IGFzeW5jIGZ1bmN0aW9uIGFkZFJvb3RDZXJ0aWZpY2F0ZSAoY2VydCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICByYXcgPSBmYWxzZSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGV4ZWNNZXRob2QgPSBhc3luYyAoY2VydFBhdGgpID0+IGF3YWl0IHRoaXMuZXhlYygna2V5Y2hhaW4nLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ2tleWNoYWluIGFkZC1yb290LWNlcnQnKSwgJ2FkZC1yb290LWNlcnQnLCBjZXJ0UGF0aF0sXG4gIH0pO1xuICBpZiAocmF3KSB7XG4gICAgYXdhaXQgaGFuZGxlUmF3UGF5bG9hZChjZXJ0LCBleGVjTWV0aG9kKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBleGVjTWV0aG9kKGNlcnQpO1xuICB9XG59O1xuXG4vKipcbiAqIEFkZHMgdGhlIGdpdmVuIGNlcnRpZmljYXRlIHRvIHRoZSBLZXljaGFpbiBTdG9yZSBvbiB0aGUgc2ltdWxhdG9yXG4gKlxuICogQHNpbmNlIFhjb2RlIDExLjQgU0RLXG4gKiBAcGFyYW0ge3N0cmluZ30gY2VydCB0aGUgZnVsbCBwYXRoIHRvIGEgdmFsaWQgLmNlcnQgZmlsZSBjb250YWluaW5nXG4gKiB0aGUgY2VydGlmaWNhdGUgY29udGVudCBvciB0aGUgY2VydGlmaWNhdGUgY29udGVudCBpdHNlbGYsIGRlcGVuZGluZyBvblxuICogb3B0aW9uc1xuICogQHBhcmFtIHtDZXJ0T3B0aW9uc30gb3B0c1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBhZGRpbmcgdGhlIGNlcnRpZmljYXRlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5hZGRDZXJ0aWZpY2F0ZSA9IGFzeW5jIGZ1bmN0aW9uIGFkZENlcnRpZmljYXRlIChjZXJ0LCBvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHJhdyA9IGZhbHNlLFxuICB9ID0gb3B0cztcbiAgY29uc3QgZXhlY01ldGhvZCA9IGFzeW5jIChjZXJ0UGF0aCkgPT4gYXdhaXQgdGhpcy5leGVjKCdrZXljaGFpbicsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgna2V5Y2hhaW4gYWRkLWNlcnQnKSwgJ2FkZC1jZXJ0JywgY2VydFBhdGhdLFxuICB9KTtcbiAgaWYgKHJhdykge1xuICAgIGF3YWl0IGhhbmRsZVJhd1BheWxvYWQoY2VydCwgZXhlY01ldGhvZCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgZXhlY01ldGhvZChjZXJ0KTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZXNldHMgdGhlIHNpbXVsYXRvciBrZXljaGFpblxuICpcbiAqIEBzaW5jZSBYY29kZSAxMS40IFNES1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZXNldHRpbmcgdGhlIGtleWNoYWluXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5yZXNldEtleWNoYWluID0gYXN5bmMgZnVuY3Rpb24gcmVzZXRLZXljaGFpbiAoKSB7XG4gIGF3YWl0IHRoaXMuZXhlYygna2V5Y2hhaW4nLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ2tleWNoYWluIHJlc2V0JyksICdyZXNldCddLFxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"keychain.js","names":["commands","rimrafAsync","B","promisify","rimraf","writeFileAsync","fs","writeFile","handleRawPayload","payload","onPayloadStored","filePath","path","resolve","os","tmpdir","uuidV4","_","isBuffer","addRootCertificate","cert","opts","raw","execMethod","certPath","exec","args","requireUdid","addCertificate","resetKeychain"],"sources":["../../../lib/subcommands/keychain.js"],"sourcesContent":["import os from 'os';\nimport fs from 'fs';\nimport B from 'bluebird';\nimport { v4 as uuidV4 } from 'uuid';\nimport path from 'path';\nimport _ from 'lodash';\nimport rimraf from 'rimraf';\n\nconst commands = {};\nconst rimrafAsync = B.promisify(rimraf);\nconst writeFileAsync = B.promisify(fs.writeFile);\n\nasync function handleRawPayload (payload, onPayloadStored) {\n const filePath = path.resolve(os.tmpdir(), `${uuidV4()}.pem`);\n try {\n if (_.isBuffer(payload)) {\n await writeFileAsync(filePath, payload);\n } else {\n await writeFileAsync(filePath, payload, 'utf8');\n }\n await onPayloadStored(filePath);\n } finally {\n await rimrafAsync(filePath);\n }\n}\n\n\n/**\n * @typedef {Object} CertOptions\n * @property {boolean} raw [false] - whether the `cert` argument\n * is the path to the certificate on the local file system or\n * a raw certificate content\n */\n\n/**\n * Adds the given certificate to the Trusted Root Store on the simulator\n *\n * @since Xcode 11.4 SDK\n * @param {string} cert the full path to a valid .cert file containing\n * the certificate content or the certificate content itself, depending on\n * options\n * @param {CertOptions} opts\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while adding the certificate\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.addRootCertificate = async function addRootCertificate (cert, opts = {}) {\n const {\n raw = false,\n } = opts;\n const execMethod = async (certPath) => await this.exec('keychain', {\n args: [this.requireUdid('keychain add-root-cert'), 'add-root-cert', certPath],\n });\n if (raw) {\n await handleRawPayload(cert, execMethod);\n } else {\n await execMethod(cert);\n }\n};\n\n/**\n * Adds the given certificate to the Keychain Store on the simulator\n *\n * @since Xcode 11.4 SDK\n * @param {string} cert the full path to a valid .cert file containing\n * the certificate content or the certificate content itself, depending on\n * options\n * @param {CertOptions} opts\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while adding the certificate\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.addCertificate = async function addCertificate (cert, opts = {}) {\n const {\n raw = false,\n } = opts;\n const execMethod = async (certPath) => await this.exec('keychain', {\n args: [this.requireUdid('keychain add-cert'), 'add-cert', certPath],\n });\n if (raw) {\n await handleRawPayload(cert, execMethod);\n } else {\n await execMethod(cert);\n }\n};\n\n/**\n * Resets the simulator keychain\n *\n * @since Xcode 11.4 SDK\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while resetting the keychain\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.resetKeychain = async function resetKeychain () {\n await this.exec('keychain', {\n args: [this.requireUdid('keychain reset'), 'reset'],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAMC,WAAW,GAAGC,iBAAC,CAACC,SAAS,CAACC,eAAM,CAAC;AACvC,MAAMC,cAAc,GAAGH,iBAAC,CAACC,SAAS,CAACG,WAAE,CAACC,SAAS,CAAC;AAEhD,eAAeC,gBAAgB,CAAEC,OAAO,EAAEC,eAAe,EAAE;EACzD,MAAMC,QAAQ,GAAGC,aAAI,CAACC,OAAO,CAACC,WAAE,CAACC,MAAM,EAAE,EAAG,GAAE,IAAAC,QAAM,GAAG,MAAK,CAAC;EAC7D,IAAI;IACF,IAAIC,eAAC,CAACC,QAAQ,CAACT,OAAO,CAAC,EAAE;MACvB,MAAMJ,cAAc,CAACM,QAAQ,EAAEF,OAAO,CAAC;IACzC,CAAC,MAAM;MACL,MAAMJ,cAAc,CAACM,QAAQ,EAAEF,OAAO,EAAE,MAAM,CAAC;IACjD;IACA,MAAMC,eAAe,CAACC,QAAQ,CAAC;EACjC,CAAC,SAAS;IACR,MAAMV,WAAW,CAACU,QAAQ,CAAC;EAC7B;AACF;;AAsBAX,QAAQ,CAACmB,kBAAkB,GAAG,eAAeA,kBAAkB,CAAEC,IAAI,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EAChF,MAAM;IACJC,GAAG,GAAG;EACR,CAAC,GAAGD,IAAI;EACR,MAAME,UAAU,GAAG,MAAOC,QAAQ,IAAK,MAAM,IAAI,CAACC,IAAI,CAAC,UAAU,EAAE;IACjEC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,wBAAwB,CAAC,EAAE,eAAe,EAAEH,QAAQ;EAC9E,CAAC,CAAC;EACF,IAAIF,GAAG,EAAE;IACP,MAAMd,gBAAgB,CAACY,IAAI,EAAEG,UAAU,CAAC;EAC1C,CAAC,MAAM;IACL,MAAMA,UAAU,CAACH,IAAI,CAAC;EACxB;AACF,CAAC;;AAcDpB,QAAQ,CAAC4B,cAAc,GAAG,eAAeA,cAAc,CAAER,IAAI,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EACxE,MAAM;IACJC,GAAG,GAAG;EACR,CAAC,GAAGD,IAAI;EACR,MAAME,UAAU,GAAG,MAAOC,QAAQ,IAAK,MAAM,IAAI,CAACC,IAAI,CAAC,UAAU,EAAE;IACjEC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAEH,QAAQ;EACpE,CAAC,CAAC;EACF,IAAIF,GAAG,EAAE;IACP,MAAMd,gBAAgB,CAACY,IAAI,EAAEG,UAAU,CAAC;EAC1C,CAAC,MAAM;IACL,MAAMA,UAAU,CAACH,IAAI,CAAC;EACxB;AACF,CAAC;;AAUDpB,QAAQ,CAAC6B,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAM,IAAI,CAACJ,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,gBAAgB,CAAC,EAAE,OAAO;EACpD,CAAC,CAAC;AACJ,CAAC;AAAC,eAEa3B,QAAQ;AAAA"}
1
+ {"version":3,"file":"keychain.js","names":["commands","rimrafAsync","B","promisify","rimraf","writeFileAsync","fs","writeFile","handleRawPayload","payload","onPayloadStored","filePath","path","resolve","os","tmpdir","uuidV4","_","isBuffer","addRootCertificate","cert","opts","raw","execMethod","certPath","exec","args","requireUdid","addCertificate","resetKeychain"],"sources":["../../../lib/subcommands/keychain.js"],"sourcesContent":["import os from 'os';\nimport fs from 'fs';\nimport B from 'bluebird';\nimport { v4 as uuidV4 } from 'uuid';\nimport path from 'path';\nimport _ from 'lodash';\nimport rimraf from 'rimraf';\n\nconst commands = {};\nconst rimrafAsync = B.promisify(rimraf);\nconst writeFileAsync = B.promisify(fs.writeFile);\n\nasync function handleRawPayload (payload, onPayloadStored) {\n const filePath = path.resolve(os.tmpdir(), `${uuidV4()}.pem`);\n try {\n if (_.isBuffer(payload)) {\n await writeFileAsync(filePath, payload);\n } else {\n await writeFileAsync(filePath, payload, 'utf8');\n }\n await onPayloadStored(filePath);\n } finally {\n await rimrafAsync(filePath);\n }\n}\n\n\n/**\n * @typedef {Object} CertOptions\n * @property {boolean} raw [false] - whether the `cert` argument\n * is the path to the certificate on the local file system or\n * a raw certificate content\n */\n\n/**\n * Adds the given certificate to the Trusted Root Store on the simulator\n *\n * @since Xcode 11.4 SDK\n * @param {string} cert the full path to a valid .cert file containing\n * the certificate content or the certificate content itself, depending on\n * options\n * @param {CertOptions} opts\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while adding the certificate\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.addRootCertificate = async function addRootCertificate (cert, opts = {}) {\n const {\n raw = false,\n } = opts;\n const execMethod = async (certPath) => await this.exec('keychain', {\n args: [this.requireUdid('keychain add-root-cert'), 'add-root-cert', certPath],\n });\n if (raw) {\n await handleRawPayload(cert, execMethod);\n } else {\n await execMethod(cert);\n }\n};\n\n/**\n * Adds the given certificate to the Keychain Store on the simulator\n *\n * @since Xcode 11.4 SDK\n * @param {string} cert the full path to a valid .cert file containing\n * the certificate content or the certificate content itself, depending on\n * options\n * @param {CertOptions} opts\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while adding the certificate\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.addCertificate = async function addCertificate (cert, opts = {}) {\n const {\n raw = false,\n } = opts;\n const execMethod = async (certPath) => await this.exec('keychain', {\n args: [this.requireUdid('keychain add-cert'), 'add-cert', certPath],\n });\n if (raw) {\n await handleRawPayload(cert, execMethod);\n } else {\n await execMethod(cert);\n }\n};\n\n/**\n * Resets the simulator keychain\n *\n * @since Xcode 11.4 SDK\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while resetting the keychain\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.resetKeychain = async function resetKeychain () {\n await this.exec('keychain', {\n args: [this.requireUdid('keychain reset'), 'reset'],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAMC,WAAW,GAAGC,iBAAC,CAACC,SAAS,CAACC,eAAM,CAAC;AACvC,MAAMC,cAAc,GAAGH,iBAAC,CAACC,SAAS,CAACG,WAAE,CAACC,SAAS,CAAC;AAEhD,eAAeC,gBAAgB,CAAEC,OAAO,EAAEC,eAAe,EAAE;EACzD,MAAMC,QAAQ,GAAGC,aAAI,CAACC,OAAO,CAACC,WAAE,CAACC,MAAM,EAAE,EAAG,GAAE,IAAAC,QAAM,GAAG,MAAK,CAAC;EAC7D,IAAI;IACF,IAAIC,eAAC,CAACC,QAAQ,CAACT,OAAO,CAAC,EAAE;MACvB,MAAMJ,cAAc,CAACM,QAAQ,EAAEF,OAAO,CAAC;IACzC,CAAC,MAAM;MACL,MAAMJ,cAAc,CAACM,QAAQ,EAAEF,OAAO,EAAE,MAAM,CAAC;IACjD;IACA,MAAMC,eAAe,CAACC,QAAQ,CAAC;EACjC,CAAC,SAAS;IACR,MAAMV,WAAW,CAACU,QAAQ,CAAC;EAC7B;AACF;AAsBAX,QAAQ,CAACmB,kBAAkB,GAAG,eAAeA,kBAAkB,CAAEC,IAAI,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EAChF,MAAM;IACJC,GAAG,GAAG;EACR,CAAC,GAAGD,IAAI;EACR,MAAME,UAAU,GAAG,MAAOC,QAAQ,IAAK,MAAM,IAAI,CAACC,IAAI,CAAC,UAAU,EAAE;IACjEC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,wBAAwB,CAAC,EAAE,eAAe,EAAEH,QAAQ;EAC9E,CAAC,CAAC;EACF,IAAIF,GAAG,EAAE;IACP,MAAMd,gBAAgB,CAACY,IAAI,EAAEG,UAAU,CAAC;EAC1C,CAAC,MAAM;IACL,MAAMA,UAAU,CAACH,IAAI,CAAC;EACxB;AACF,CAAC;AAcDpB,QAAQ,CAAC4B,cAAc,GAAG,eAAeA,cAAc,CAAER,IAAI,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EACxE,MAAM;IACJC,GAAG,GAAG;EACR,CAAC,GAAGD,IAAI;EACR,MAAME,UAAU,GAAG,MAAOC,QAAQ,IAAK,MAAM,IAAI,CAACC,IAAI,CAAC,UAAU,EAAE;IACjEC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAEH,QAAQ;EACpE,CAAC,CAAC;EACF,IAAIF,GAAG,EAAE;IACP,MAAMd,gBAAgB,CAACY,IAAI,EAAEG,UAAU,CAAC;EAC1C,CAAC,MAAM;IACL,MAAMA,UAAU,CAACH,IAAI,CAAC;EACxB;AACF,CAAC;AAUDpB,QAAQ,CAAC6B,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAM,IAAI,CAACJ,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,gBAAgB,CAAC,EAAE,OAAO;EACpD,CAAC,CAAC;AACJ,CAAC;AAAC,eAEa3B,QAAQ;AAAA"}
@@ -9,7 +9,6 @@ require("source-map-support/register");
9
9
  var _lodash = _interopRequireDefault(require("lodash"));
10
10
  var _asyncbox = require("asyncbox");
11
11
  const commands = {};
12
-
13
12
  commands.launchApp = async function launchApp(bundleId, tries = 5) {
14
13
  return await (0, _asyncbox.retryInterval)(tries, 1000, async () => {
15
14
  const {
@@ -22,4 +21,4 @@ commands.launchApp = async function launchApp(bundleId, tries = 5) {
22
21
  };
23
22
  var _default = commands;
24
23
  exports.default = _default;
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImxhdW5jaEFwcCIsImJ1bmRsZUlkIiwidHJpZXMiLCJyZXRyeUludGVydmFsIiwic3Rkb3V0IiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsIl8iLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL2xhdW5jaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBFeGVjdXRlIHRoZSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIHBhY2thZ2Ugb24gU2ltdWxhdG9yLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUgYW5kXG4gKiB0aGUgYXBwbGljYXRpb24gd2l0aCBnaXZlbiBidW5kbGUgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBCdW5kbGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24sXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBnb2luZyB0byBiZSByZW1vdmVkLlxuICogQHBhcmFtIHtudW1iZXJ9IHRyaWVzIFs1XSAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGJlZm9yZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93aW5nIGFuIGV4Y2VwdGlvbi5cbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGFjdHVhbCBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMubGF1bmNoQXBwID0gYXN5bmMgZnVuY3Rpb24gbGF1bmNoQXBwIChidW5kbGVJZCwgdHJpZXMgPSA1KSB7XG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHRyaWVzLCAxMDAwLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ2xhdW5jaCcsIHtcbiAgICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsYXVuY2gnKSwgYnVuZGxlSWRdLFxuICAgIH0pO1xuICAgIHJldHVybiBfLnRyaW0oc3Rkb3V0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQzs7QUFnQm5CQSxRQUFRLENBQUNDLFNBQVMsR0FBRyxlQUFlQSxTQUFTLENBQUVDLFFBQVEsRUFBRUMsS0FBSyxHQUFHLENBQUMsRUFBRTtFQUNsRSxPQUFPLE1BQU0sSUFBQUMsdUJBQWEsRUFBQ0QsS0FBSyxFQUFFLElBQUksRUFBRSxZQUFZO0lBQ2xELE1BQU07TUFBQ0U7SUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxRQUFRLEVBQUU7TUFDekNDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFTixRQUFRO0lBQzdDLENBQUMsQ0FBQztJQUNGLE9BQU9PLGVBQUMsQ0FBQ0MsSUFBSSxDQUFDTCxNQUFNLENBQUM7RUFDdkIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLGVBRWFMLFFBQVE7QUFBQSJ9
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImxhdW5jaEFwcCIsImJ1bmRsZUlkIiwidHJpZXMiLCJyZXRyeUludGVydmFsIiwic3Rkb3V0IiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsIl8iLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL2xhdW5jaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBFeGVjdXRlIHRoZSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIHBhY2thZ2Ugb24gU2ltdWxhdG9yLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUgYW5kXG4gKiB0aGUgYXBwbGljYXRpb24gd2l0aCBnaXZlbiBidW5kbGUgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBCdW5kbGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24sXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBnb2luZyB0byBiZSByZW1vdmVkLlxuICogQHBhcmFtIHtudW1iZXJ9IHRyaWVzIFs1XSAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGJlZm9yZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93aW5nIGFuIGV4Y2VwdGlvbi5cbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGFjdHVhbCBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMubGF1bmNoQXBwID0gYXN5bmMgZnVuY3Rpb24gbGF1bmNoQXBwIChidW5kbGVJZCwgdHJpZXMgPSA1KSB7XG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHRyaWVzLCAxMDAwLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ2xhdW5jaCcsIHtcbiAgICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsYXVuY2gnKSwgYnVuZGxlSWRdLFxuICAgIH0pO1xuICAgIHJldHVybiBfLnRyaW0oc3Rkb3V0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQztBQWdCbkJBLFFBQVEsQ0FBQ0MsU0FBUyxHQUFHLGVBQWVBLFNBQVMsQ0FBRUMsUUFBUSxFQUFFQyxLQUFLLEdBQUcsQ0FBQyxFQUFFO0VBQ2xFLE9BQU8sTUFBTSxJQUFBQyx1QkFBYSxFQUFDRCxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVk7SUFDbEQsTUFBTTtNQUFDRTtJQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFFBQVEsRUFBRTtNQUN6Q0MsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUVOLFFBQVE7SUFDN0MsQ0FBQyxDQUFDO0lBQ0YsT0FBT08sZUFBQyxDQUFDQyxJQUFJLENBQUNMLE1BQU0sQ0FBQztFQUN2QixDQUFDLENBQUM7QUFDSixDQUFDO0FBQUMsZUFFYUwsUUFBUTtBQUFBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","names":["commands","launchApp","bundleId","tries","retryInterval","stdout","exec","args","requireUdid","_","trim"],"sources":["../../../lib/subcommands/launch.js"],"sourcesContent":["import _ from 'lodash';\nimport { retryInterval } from 'asyncbox';\n\nconst commands = {};\n\n/**\n * Execute the particular application package on Simulator.\n * It is required that Simulator is in _booted_ state and\n * the application with given bundle identifier is already installed.\n *\n * @param {string} bundleId - Bundle identifier of the application,\n * which is going to be removed.\n * @param {number} tries [5] - The maximum number of retries before\n * throwing an exception.\n * @return {string} the actual command output\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.launchApp = async function launchApp (bundleId, tries = 5) {\n return await retryInterval(tries, 1000, async () => {\n const {stdout} = await this.exec('launch', {\n args: [this.requireUdid('launch'), bundleId],\n });\n return _.trim(stdout);\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AAgBnBA,QAAQ,CAACC,SAAS,GAAG,eAAeA,SAAS,CAAEC,QAAQ,EAAEC,KAAK,GAAG,CAAC,EAAE;EAClE,OAAO,MAAM,IAAAC,uBAAa,EAACD,KAAK,EAAE,IAAI,EAAE,YAAY;IAClD,MAAM;MAACE;IAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE;MACzCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,QAAQ,CAAC,EAAEN,QAAQ;IAC7C,CAAC,CAAC;IACF,OAAOO,eAAC,CAACC,IAAI,CAACL,MAAM,CAAC;EACvB,CAAC,CAAC;AACJ,CAAC;AAAC,eAEaL,QAAQ;AAAA"}
1
+ {"version":3,"file":"launch.js","names":["commands","launchApp","bundleId","tries","retryInterval","stdout","exec","args","requireUdid","_","trim"],"sources":["../../../lib/subcommands/launch.js"],"sourcesContent":["import _ from 'lodash';\nimport { retryInterval } from 'asyncbox';\n\nconst commands = {};\n\n/**\n * Execute the particular application package on Simulator.\n * It is required that Simulator is in _booted_ state and\n * the application with given bundle identifier is already installed.\n *\n * @param {string} bundleId - Bundle identifier of the application,\n * which is going to be removed.\n * @param {number} tries [5] - The maximum number of retries before\n * throwing an exception.\n * @return {string} the actual command output\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.launchApp = async function launchApp (bundleId, tries = 5) {\n return await retryInterval(tries, 1000, async () => {\n const {stdout} = await this.exec('launch', {\n args: [this.requireUdid('launch'), bundleId],\n });\n return _.trim(stdout);\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAgBnBA,QAAQ,CAACC,SAAS,GAAG,eAAeA,SAAS,CAAEC,QAAQ,EAAEC,KAAK,GAAG,CAAC,EAAE;EAClE,OAAO,MAAM,IAAAC,uBAAa,EAACD,KAAK,EAAE,IAAI,EAAE,YAAY;IAClD,MAAM;MAACE;IAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE;MACzCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,QAAQ,CAAC,EAAEN,QAAQ;IAC7C,CAAC,CAAC;IACF,OAAOO,eAAC,CAACC,IAAI,CAACL,MAAM,CAAC;EACvB,CAAC,CAAC;AACJ,CAAC;AAAC,eAEaL,QAAQ;AAAA"}
@@ -12,14 +12,12 @@ var _logger = _interopRequireWildcard(require("../logger"));
12
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
14
  const commands = {};
15
-
16
15
  commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
17
16
  const {
18
17
  stdout
19
18
  } = await this.exec('list', {
20
19
  args: ['devices']
21
20
  });
22
-
23
21
  const deviceSectionRe = _lodash.default.isEmpty(platform) ? new RegExp(`\\-\\-\\s+(\\S+)\\s+(\\S+)\\s+\\-\\-(\\n\\s{4}.+)*`, 'mgi') : new RegExp(`\\-\\-\\s+${_lodash.default.escapeRegExp(platform)}\\s+(\\S+)\\s+\\-\\-(\\n\\s{4}.+)*`, 'mgi');
24
22
  const matches = [];
25
23
  let match;
@@ -53,7 +51,6 @@ commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
53
51
  }
54
52
  return devices;
55
53
  };
56
-
57
54
  commands.getDevices = async function getDevices(forSdk, platform) {
58
55
  let devices = {};
59
56
  try {
@@ -69,7 +66,6 @@ commands.getDevices = async function getDevices(forSdk, platform) {
69
66
  if (!versionMatch) {
70
67
  continue;
71
68
  }
72
-
73
69
  const sdk = (platform ? versionMatch[1] : versionMatch[2]).replace('-', '.');
74
70
  devices[sdk] = devices[sdk] || [];
75
71
  devices[sdk].push(...entries.filter(el => _lodash.default.isUndefined(el.isAvailable) || el.isAvailable).map(el => {
@@ -97,7 +93,6 @@ commands.getDevices = async function getDevices(forSdk, platform) {
97
93
  errMsg += availableSDKs.length ? ` Only the following Simulator SDK versions are available on your system: ${availableSDKs.join(', ')}` : ` No Simulator SDK versions are available on your system. Please install some via Xcode preferences.`;
98
94
  throw new Error(errMsg);
99
95
  };
100
-
101
96
  commands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatformVersionViaJson(platformVersion, platform = 'iOS') {
102
97
  const {
103
98
  stdout
@@ -115,7 +110,6 @@ commands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatf
115
110
  }
116
111
  throw new Error(`Could not use --json flag to parse platform version`);
117
112
  };
118
-
119
113
  commands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVersion(platformVersion, platform = 'iOS') {
120
114
  try {
121
115
  const {
@@ -131,10 +125,8 @@ commands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVers
131
125
  }
132
126
  }
133
127
  } catch (ign) {}
134
-
135
128
  return platformVersion;
136
129
  };
137
-
138
130
  commands.getDeviceTypes = async function getDeviceTypes() {
139
131
  const {
140
132
  stdout
@@ -148,7 +140,6 @@ commands.getDeviceTypes = async function getDeviceTypes() {
148
140
  throw new Error(`Unable to get list of device types: ${err.message}`);
149
141
  }
150
142
  };
151
-
152
143
  commands.list = async function list() {
153
144
  const {
154
145
  stdout
@@ -163,4 +154,4 @@ commands.list = async function list() {
163
154
  };
164
155
  var _default = commands;
165
156
  exports.default = _default;
166
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldERldmljZXNCeVBhcnNpbmciLCJwbGF0Zm9ybSIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwiZGV2aWNlU2VjdGlvblJlIiwiXyIsImlzRW1wdHkiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaGVzIiwibWF0Y2giLCJwdXNoIiwiRXJyb3IiLCJsaW5lUmUiLCJkZXZpY2VzIiwic2RrIiwibGluZSIsInNwbGl0Iiwic2xpY2UiLCJpbmNsdWRlcyIsImxpbmVNYXRjaCIsIm5hbWUiLCJ1ZGlkIiwic3RhdGUiLCJnZXREZXZpY2VzIiwiZm9yU2RrIiwidmVyc2lvbk1hdGNoUmUiLCJzZGtOYW1lIiwiZW50cmllcyIsInRvUGFpcnMiLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwiU0lNX1JVTlRJTUVfTkFNRSIsInZlcnNpb25NYXRjaCIsImZpbHRlciIsImVsIiwiaXNVbmRlZmluZWQiLCJpc0F2YWlsYWJsZSIsIm1hcCIsImF2YWlsYWJpbGl0eSIsImVyciIsImxvZyIsImRlYnVnIiwiTE9HX1BSRUZJWCIsInN0YWNrIiwiZXJyTXNnIiwiYXZhaWxhYmxlU0RLcyIsImtleXMiLCJsZW5ndGgiLCJqb2luIiwiZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24iLCJwbGF0Zm9ybVZlcnNpb24iLCJ2ZXJzaW9uIiwiaWRlbnRpZmllciIsInJ1bnRpbWVzIiwibm9ybWFsaXplVmVyc2lvbiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24iLCJydW50aW1lUmUiLCJpZ24iLCJnZXREZXZpY2VUeXBlcyIsImRldmljZVR5cGVzIiwidHJpbSIsImRldmljZXR5cGVzIiwidHlwZSIsIm1lc3NhZ2UiLCJsaXN0IiwiZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTSU1fUlVOVElNRV9OQU1FLCBub3JtYWxpemVWZXJzaW9uIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgbG9nLCB7IExPR19QUkVGSVggfSBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgZGV2aWNlIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdWRpZCAtIFRoZSBkZXZpY2UgVURJRC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBjdXJyZW50IFNpbXVsYXRvciBzdGF0ZSwgZm9yIGV4YW1wbGUgJ2Jvb3RlZCcgb3IgJ3NodXRkb3duJy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZGsgLSBUaGUgU0RLIHZlcnNpb24sIGZvciBleGFtcGxlICcxMC4zJy5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIFNpbXVsYXRvciBkZXZpY2VzIHRvIHJlcHJlc2VudFxuICogaXQgYXMgY29udmVuaWVudCBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIG1hcHBpbmcuIEVhY2gga2V5IGlzIHBsYXRmb3JtIHZlcnNpb24sXG4gKiAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgYW5cbiAqICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgdGhlIG1hdGNoaW5nIHtAbGluayBEZXZpY2VJbmZvfSBpbnN0YW5jZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXNCeVBhcnNpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzQnlQYXJzaW5nIChwbGF0Zm9ybSkge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ2RldmljZXMnXSxcbiAgfSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGNvbnN0IGRldmljZVNlY3Rpb25SZSA9IF8uaXNFbXB0eShwbGF0Zm9ybSlcbiAgICA/IG5ldyBSZWdFeHAoYFxcXFwtXFxcXC1cXFxccysoXFxcXFMrKVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKVxuICAgIDogbmV3IFJlZ0V4cChgXFxcXC1cXFxcLVxcXFxzKyR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKTtcbiAgY29uc3QgbWF0Y2hlcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKChtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCkpKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG1hdGNoZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgbGluZVJlID0gLyhbXlxcc10uKykgXFwoKFxcdystLitcXHcrKVxcKSBcXCgoXFx3K1xccz9cXHcrKVxcKS87IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvbEc3bUs2LzNcbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgY29uc3QgZGV2aWNlcyA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBjb25zdCBzZGsgPSBwbGF0Zm9ybSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMF0uc3BsaXQoJ1xcbicpLnNsaWNlKDEpKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnKHVuYXZhaWxhYmxlLCAnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBjb25zdCBsaW5lTWF0Y2ggPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbGluZU1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGxpbmU6ICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICAgIHNkayxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IG1hdGNoWzFdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXZpY2VzO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbGlzdCBvZiBleGlzdGluZyBTaW11bGF0b3IgZGV2aWNlcyB0byByZXByZXNlbnRcbiAqIGl0IGFzIGNvbnZlbmllbnQgbWFwcGluZyBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGZvclNkayAtIFRoZSBzZGsgdmVyc2lvbixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBkZXZpY2VzIGxpc3Qgc2hvdWxkIGJlIHBhcnNlZCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtPYmplY3R8QXJyYXk8RGV2aWNlSW5mbz59IElmIF9mb3JTZGtfIGlzIHNldCB0aGVuIHRoZSBsaXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGRldmljZXMgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB0aGUgc2FtZSByZXN1bHQgYXMgZm9yIHtAbGluayBnZXREZXZpY2VzQnlQYXJzaW5nfVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZSBvciBpZiBubyBtYXRjaGluZ1xuICogICAgICAgICAgICAgICAgIHBsYXRmb3JtIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIHN5c3RlbS5cbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZXMgKGZvclNkaywgcGxhdGZvcm0pIHtcbiAgbGV0IGRldmljZXMgPSB7fTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICAgIGFyZ3M6IFsnZGV2aWNlcycsICctaiddLFxuICAgIH0pO1xuICAgIC8qIEpTT04gc2hvdWxkIGJlXG4gICAgICoge1xuICAgICAqICAgXCJkZXZpY2VzXCIgOiB7XG4gICAgICogICAgIFwiaU9TIDxzZGs+XCIgOiBbIC8vIG9yXG4gICAgICogICAgIFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtPHNkaz4gOiBbXG4gICAgICogICAgICAge1xuICAgICAqICAgICAgICAgXCJzdGF0ZVwiIDogXCJCb290ZWRcIixcbiAgICAgKiAgICAgICAgIFwiYXZhaWxhYmlsaXR5XCIgOiBcIihhdmFpbGFibGUpXCIsXG4gICAgICogICAgICAgICBcImlzQXZhaWxhYmxlXCIgOiB0cnVlLFxuICAgICAqICAgICAgICAgXCJuYW1lXCIgOiBcImlQaG9uZSA2XCIsXG4gICAgICogICAgICAgICBcInVkaWRcIiA6IFwiNzVFMzQxNDAtMThFOC00RDFBLTlGNDUtQUFDNzM1REY3NURGXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIF1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgY29uc3QgdmVyc2lvbk1hdGNoUmUgPSBfLmlzRW1wdHkocGxhdGZvcm0pXG4gICAgICA/IG5ldyBSZWdFeHAoYF4oW15cXFxccy1dKylbXFxcXHMtXShcXFxcUyspYCwgJ2knKVxuICAgICAgOiBuZXcgUmVnRXhwKGBeJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9W1xcXFxzLV0oXFxcXFMrKWAsICdpJyk7XG4gICAgZm9yIChsZXQgW3Nka05hbWUsIGVudHJpZXNdIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHN0ZG91dCkuZGV2aWNlcykpIHtcbiAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGEgbG9uZ2VyIG5hbWUsIHNvIHJlbW92ZSBpdFxuICAgICAgc2RrTmFtZSA9IHNka05hbWUucmVwbGFjZShTSU1fUlVOVElNRV9OQU1FLCAnJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSB2ZXJzaW9uTWF0Y2hSZS5leGVjKHNka05hbWUpO1xuICAgICAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBzZGsgY2FuIGhhdmUgZGFzaGVzIChgMTItMmApIG9yIGRvdHMgKGAxMi4xYClcbiAgICAgIGNvbnN0IHNkayA9IChwbGF0Zm9ybSA/IHZlcnNpb25NYXRjaFsxXSA6IHZlcnNpb25NYXRjaFsyXSkucmVwbGFjZSgnLScsICcuJyk7XG4gICAgICBkZXZpY2VzW3Nka10gPSBkZXZpY2VzW3Nka10gfHwgW107XG4gICAgICBkZXZpY2VzW3Nka10ucHVzaCguLi5lbnRyaWVzLmZpbHRlcigoZWwpID0+IF8uaXNVbmRlZmluZWQoZWwuaXNBdmFpbGFibGUpIHx8IGVsLmlzQXZhaWxhYmxlKVxuICAgICAgICAubWFwKChlbCkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbC5hdmFpbGFiaWxpdHk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNkayxcbiAgICAgICAgICAgIC4uLmVsLFxuICAgICAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IHZlcnNpb25NYXRjaFsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhMT0dfUFJFRklYLCBgVW5hYmxlIHRvIGdldCBKU09OIGRldmljZSBsaXN0OiAke2Vyci5zdGFja31gKTtcbiAgICBsb2cuZGVidWcoTE9HX1BSRUZJWCwgJ0ZhbGxpbmcgYmFjayB0byBtYW51YWwgcGFyc2luZycpO1xuICAgIGRldmljZXMgPSBhd2FpdCB0aGlzLmdldERldmljZXNCeVBhcnNpbmcocGxhdGZvcm0pO1xuICB9XG5cbiAgaWYgKCFmb3JTZGspIHtcbiAgICByZXR1cm4gZGV2aWNlcztcbiAgfVxuICAvLyBpZiBhIGBmb3JTZGtgIHdhcyBwYXNzZWQgaW4sIHJldHVybiBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIGxpc3RcbiAgaWYgKGRldmljZXNbZm9yU2RrXSkge1xuICAgIHJldHVybiBkZXZpY2VzW2ZvclNka107XG4gIH1cblxuICBsZXQgZXJyTXNnID0gYCcke2ZvclNka30nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IG9mIHNpbWN0bCBTREtzLmA7XG4gIGNvbnN0IGF2YWlsYWJsZVNES3MgPSBfLmtleXMoZGV2aWNlcyk7XG4gIGVyck1zZyArPSBhdmFpbGFibGVTREtzLmxlbmd0aFxuICAgID8gYCBPbmx5IHRoZSBmb2xsb3dpbmcgU2ltdWxhdG9yIFNESyB2ZXJzaW9ucyBhcmUgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtOiAke2F2YWlsYWJsZVNES3Muam9pbignLCAnKX1gXG4gICAgOiBgIE5vIFNpbXVsYXRvciBTREsgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbS4gUGxlYXNlIGluc3RhbGwgc29tZSB2aWEgWGNvZGUgcHJlZmVyZW5jZXMuYDtcbiAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbiB1c2luZyAtLWpzb24gZmxhZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbGF0Zm9ybVZlcnNpb24gLSBUaGUgcGxhdGZvcm0gdmVyc2lvbiBuYW1lLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJy5cbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29ycmVzcG9uZGluZyBydW50aW1lIG5hbWUgZm9yIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgICBwbGF0Zm9ybSB2ZXJzaW9uLlxuICovXG5jb21tYW5kcy5nZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uVmlhSnNvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb25WaWFKc29uIChcbiAgcGxhdGZvcm1WZXJzaW9uLCBwbGF0Zm9ybSA9ICdpT1MnKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsncnVudGltZXMnLCAnLS1qc29uJ10sXG4gIH0pO1xuICBmb3IgKGNvbnN0IHt2ZXJzaW9uLCBpZGVudGlmaWVyLCBuYW1lfSBvZiBKU09OLnBhcnNlKHN0ZG91dCkucnVudGltZXMpIHtcbiAgICBpZiAobm9ybWFsaXplVmVyc2lvbih2ZXJzaW9uKSA9PT0gbm9ybWFsaXplVmVyc2lvbihwbGF0Zm9ybVZlcnNpb24pXG4gICAgICAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChwbGF0Zm9ybS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHVzZSAtLWpzb24gZmxhZyB0byBwYXJzZSBwbGF0Zm9ybSB2ZXJzaW9uYCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxhdGZvcm1WZXJzaW9uIC0gVGhlIHBsYXRmb3JtIHZlcnNpb24gbmFtZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSAnMTAuMycuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIG5hbWUsIGZvciBleGFtcGxlICd3YXRjaE9TJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvcnJlc3BvbmRpbmcgcnVudGltZSBuYW1lIGZvciB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gdmVyc2lvbi5cbiAqL1xuY29tbWFuZHMuZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24gKFxuICBwbGF0Zm9ybVZlcnNpb24sIHBsYXRmb3JtID0gJ2lPUycpIHtcbiAgLy8gVHJ5IHdpdGggcGFyc2luZ1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgICAgYXJnczogWydydW50aW1lcyddLFxuICAgIH0pO1xuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvVXlralFaLzFcbiAgICBjb25zdCBydW50aW1lUmUgPVxuICAgICAgbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9XFxcXHMrKFxcXFxkK1xcXFwuXFxcXGQrKVxcXFxzK1xcXFwoKFxcXFxkK1xcXFwuXFxcXGQrXFxcXC4qXFxcXGQqKWAsICdpJyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcnVudGltZVJlLmV4ZWMobGluZSk7XG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gPT09IHBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gbWF0Y2hbMl07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgLy8gaWYgbm90aGluZyB3YXMgZm91bmQsIHBhc3MgcGxhdGZvcm0gdmVyc2lvbiBiYWNrXG4gIHJldHVybiBwbGF0Zm9ybVZlcnNpb247XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBkZXZpY2UgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IFhjb2RlIGluc3RhbGxhdGlvblxuICpcbiAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59IExpc3Qgb2YgdGhlIHR5cGVzIG9mIGRldmljZXMgYXZhaWxhYmxlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIGNvbW1hbmQgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VUeXBlcyAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnZGV2aWNldHlwZXMnLCAnLWonXSxcbiAgfSk7XG4gIC8qXG4gICAqIEpTT04gd2lsbCBiZSBsaWtlOlxuICAgKiAgIHtcbiAgICogICAgIFwiZGV2aWNldHlwZXNcIiA6IFtcbiAgICogICAgICAge1xuICAgKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNHNcIixcbiAgICogICAgICAgICBcImlkZW50aWZpZXJcIiA6IFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltRGV2aWNlVHlwZS5pUGhvbmUtNHNcIlxuICAgKiAgICAgICB9LFxuICAgKiAgICAgICAuLi5cbiAgICogICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZVR5cGVzID0gSlNPTi5wYXJzZShzdGRvdXQudHJpbSgpKTtcbiAgICByZXR1cm4gZGV2aWNlVHlwZXMuZGV2aWNldHlwZXMubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgbGlzdCBvZiBkZXZpY2UgdHlwZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcnVudGltZXMsIGRldmljZXR5cGVzLCBkZXZpY2VzIGFuZCBwYWlycyBhcyBPYmplY3RcbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IE9iamVjdCBjb250YWluaW5nIGRldmljZSB0eXBlcywgcnVudGltZXMgZGV2aWNlcyBhbmQgcGFpcnMuXG4gKiBUaGUgcmVzdWx0aW5nIEpTT04gd2lsbCBiZSBsaWtlOlxuICogICB7XG4gKiAgICAgXCJkZXZpY2V0eXBlc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcIm5hbWVcIiA6IFwiaVBob25lIDRzXCIsXG4gKiAgICAgICAgIFwiaWRlbnRpZmllclwiIDogXCJjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2VUeXBlLmlQaG9uZS00c1wiXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIF0sXG4gKiAgICAgXCJydW50aW1lc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcInZlcnNpb25cIiA6ICcxMy4wJyxcbiAqICAgICAgICAgXCJidW5kbGVQYXRoXCIgOiAnL0FwcGxpY2F0aW9ucy9YY29kZTExYmV0YTQuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZScsXG4gKiAgICAgICAgIFwiaXNBdmFpbGFibGVcIiA6IHRydWUsXG4gKiAgICAgICAgIFwibmFtZVwiIDogJ2lPUyAxMy4wJyxcbiAqICAgICAgICAgXCJpZGVudGlmaWVyXCIgOiAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCcsXG4gKiAgICAgICAgIFwiYnVpbGR2ZXJzaW9uXCIgOiAnMTdBNTUzNGQnXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIH0sXG4gKiAgICAgXCJkZXZpY2VzXCIgOlxuICogICAgICAge1xuICogICAgICAgICAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCc6IFsgW09iamVjdF0sIFtPYmplY3RdIF0gfSxcbiAqICAgICAgICAgLi4uXG4gKiAgICAgICB9LFxuICogICAgIFwicGFpcnNcIiA6IHt9IH1cbiAqXG4gKiAgIH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgY29tbWFuZCBmYWlsc1xuICovXG5jb21tYW5kcy5saXN0ID0gYXN5bmMgZnVuY3Rpb24gbGlzdCAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnLWonXSxcbiAgfSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0LnRyaW0oKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBzaW1jdGwgbGlzdDogJHtlLm1lc3NhZ2V9YCk7XG4gIH1c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
157
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldERldmljZXNCeVBhcnNpbmciLCJwbGF0Zm9ybSIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwiZGV2aWNlU2VjdGlvblJlIiwiXyIsImlzRW1wdHkiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaGVzIiwibWF0Y2giLCJwdXNoIiwiRXJyb3IiLCJsaW5lUmUiLCJkZXZpY2VzIiwic2RrIiwibGluZSIsInNwbGl0Iiwic2xpY2UiLCJpbmNsdWRlcyIsImxpbmVNYXRjaCIsIm5hbWUiLCJ1ZGlkIiwic3RhdGUiLCJnZXREZXZpY2VzIiwiZm9yU2RrIiwidmVyc2lvbk1hdGNoUmUiLCJzZGtOYW1lIiwiZW50cmllcyIsInRvUGFpcnMiLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwiU0lNX1JVTlRJTUVfTkFNRSIsInZlcnNpb25NYXRjaCIsImZpbHRlciIsImVsIiwiaXNVbmRlZmluZWQiLCJpc0F2YWlsYWJsZSIsIm1hcCIsImF2YWlsYWJpbGl0eSIsImVyciIsImxvZyIsImRlYnVnIiwiTE9HX1BSRUZJWCIsInN0YWNrIiwiZXJyTXNnIiwiYXZhaWxhYmxlU0RLcyIsImtleXMiLCJsZW5ndGgiLCJqb2luIiwiZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24iLCJwbGF0Zm9ybVZlcnNpb24iLCJ2ZXJzaW9uIiwiaWRlbnRpZmllciIsInJ1bnRpbWVzIiwibm9ybWFsaXplVmVyc2lvbiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24iLCJydW50aW1lUmUiLCJpZ24iLCJnZXREZXZpY2VUeXBlcyIsImRldmljZVR5cGVzIiwidHJpbSIsImRldmljZXR5cGVzIiwidHlwZSIsIm1lc3NhZ2UiLCJsaXN0IiwiZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTSU1fUlVOVElNRV9OQU1FLCBub3JtYWxpemVWZXJzaW9uIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgbG9nLCB7IExPR19QUkVGSVggfSBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgZGV2aWNlIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdWRpZCAtIFRoZSBkZXZpY2UgVURJRC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBjdXJyZW50IFNpbXVsYXRvciBzdGF0ZSwgZm9yIGV4YW1wbGUgJ2Jvb3RlZCcgb3IgJ3NodXRkb3duJy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZGsgLSBUaGUgU0RLIHZlcnNpb24sIGZvciBleGFtcGxlICcxMC4zJy5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIFNpbXVsYXRvciBkZXZpY2VzIHRvIHJlcHJlc2VudFxuICogaXQgYXMgY29udmVuaWVudCBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIG1hcHBpbmcuIEVhY2gga2V5IGlzIHBsYXRmb3JtIHZlcnNpb24sXG4gKiAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgYW5cbiAqICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgdGhlIG1hdGNoaW5nIHtAbGluayBEZXZpY2VJbmZvfSBpbnN0YW5jZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXNCeVBhcnNpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzQnlQYXJzaW5nIChwbGF0Zm9ybSkge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ2RldmljZXMnXSxcbiAgfSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGNvbnN0IGRldmljZVNlY3Rpb25SZSA9IF8uaXNFbXB0eShwbGF0Zm9ybSlcbiAgICA/IG5ldyBSZWdFeHAoYFxcXFwtXFxcXC1cXFxccysoXFxcXFMrKVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKVxuICAgIDogbmV3IFJlZ0V4cChgXFxcXC1cXFxcLVxcXFxzKyR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKTtcbiAgY29uc3QgbWF0Y2hlcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKChtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCkpKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG1hdGNoZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgbGluZVJlID0gLyhbXlxcc10uKykgXFwoKFxcdystLitcXHcrKVxcKSBcXCgoXFx3K1xccz9cXHcrKVxcKS87IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvbEc3bUs2LzNcbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgY29uc3QgZGV2aWNlcyA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBjb25zdCBzZGsgPSBwbGF0Zm9ybSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMF0uc3BsaXQoJ1xcbicpLnNsaWNlKDEpKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnKHVuYXZhaWxhYmxlLCAnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBjb25zdCBsaW5lTWF0Y2ggPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbGluZU1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGxpbmU6ICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICAgIHNkayxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IG1hdGNoWzFdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXZpY2VzO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbGlzdCBvZiBleGlzdGluZyBTaW11bGF0b3IgZGV2aWNlcyB0byByZXByZXNlbnRcbiAqIGl0IGFzIGNvbnZlbmllbnQgbWFwcGluZyBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGZvclNkayAtIFRoZSBzZGsgdmVyc2lvbixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBkZXZpY2VzIGxpc3Qgc2hvdWxkIGJlIHBhcnNlZCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtPYmplY3R8QXJyYXk8RGV2aWNlSW5mbz59IElmIF9mb3JTZGtfIGlzIHNldCB0aGVuIHRoZSBsaXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGRldmljZXMgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB0aGUgc2FtZSByZXN1bHQgYXMgZm9yIHtAbGluayBnZXREZXZpY2VzQnlQYXJzaW5nfVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZSBvciBpZiBubyBtYXRjaGluZ1xuICogICAgICAgICAgICAgICAgIHBsYXRmb3JtIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIHN5c3RlbS5cbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZXMgKGZvclNkaywgcGxhdGZvcm0pIHtcbiAgbGV0IGRldmljZXMgPSB7fTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICAgIGFyZ3M6IFsnZGV2aWNlcycsICctaiddLFxuICAgIH0pO1xuICAgIC8qIEpTT04gc2hvdWxkIGJlXG4gICAgICoge1xuICAgICAqICAgXCJkZXZpY2VzXCIgOiB7XG4gICAgICogICAgIFwiaU9TIDxzZGs+XCIgOiBbIC8vIG9yXG4gICAgICogICAgIFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtPHNkaz4gOiBbXG4gICAgICogICAgICAge1xuICAgICAqICAgICAgICAgXCJzdGF0ZVwiIDogXCJCb290ZWRcIixcbiAgICAgKiAgICAgICAgIFwiYXZhaWxhYmlsaXR5XCIgOiBcIihhdmFpbGFibGUpXCIsXG4gICAgICogICAgICAgICBcImlzQXZhaWxhYmxlXCIgOiB0cnVlLFxuICAgICAqICAgICAgICAgXCJuYW1lXCIgOiBcImlQaG9uZSA2XCIsXG4gICAgICogICAgICAgICBcInVkaWRcIiA6IFwiNzVFMzQxNDAtMThFOC00RDFBLTlGNDUtQUFDNzM1REY3NURGXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIF1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgY29uc3QgdmVyc2lvbk1hdGNoUmUgPSBfLmlzRW1wdHkocGxhdGZvcm0pXG4gICAgICA/IG5ldyBSZWdFeHAoYF4oW15cXFxccy1dKylbXFxcXHMtXShcXFxcUyspYCwgJ2knKVxuICAgICAgOiBuZXcgUmVnRXhwKGBeJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9W1xcXFxzLV0oXFxcXFMrKWAsICdpJyk7XG4gICAgZm9yIChsZXQgW3Nka05hbWUsIGVudHJpZXNdIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHN0ZG91dCkuZGV2aWNlcykpIHtcbiAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGEgbG9uZ2VyIG5hbWUsIHNvIHJlbW92ZSBpdFxuICAgICAgc2RrTmFtZSA9IHNka05hbWUucmVwbGFjZShTSU1fUlVOVElNRV9OQU1FLCAnJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSB2ZXJzaW9uTWF0Y2hSZS5leGVjKHNka05hbWUpO1xuICAgICAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBzZGsgY2FuIGhhdmUgZGFzaGVzIChgMTItMmApIG9yIGRvdHMgKGAxMi4xYClcbiAgICAgIGNvbnN0IHNkayA9IChwbGF0Zm9ybSA/IHZlcnNpb25NYXRjaFsxXSA6IHZlcnNpb25NYXRjaFsyXSkucmVwbGFjZSgnLScsICcuJyk7XG4gICAgICBkZXZpY2VzW3Nka10gPSBkZXZpY2VzW3Nka10gfHwgW107XG4gICAgICBkZXZpY2VzW3Nka10ucHVzaCguLi5lbnRyaWVzLmZpbHRlcigoZWwpID0+IF8uaXNVbmRlZmluZWQoZWwuaXNBdmFpbGFibGUpIHx8IGVsLmlzQXZhaWxhYmxlKVxuICAgICAgICAubWFwKChlbCkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbC5hdmFpbGFiaWxpdHk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNkayxcbiAgICAgICAgICAgIC4uLmVsLFxuICAgICAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IHZlcnNpb25NYXRjaFsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhMT0dfUFJFRklYLCBgVW5hYmxlIHRvIGdldCBKU09OIGRldmljZSBsaXN0OiAke2Vyci5zdGFja31gKTtcbiAgICBsb2cuZGVidWcoTE9HX1BSRUZJWCwgJ0ZhbGxpbmcgYmFjayB0byBtYW51YWwgcGFyc2luZycpO1xuICAgIGRldmljZXMgPSBhd2FpdCB0aGlzLmdldERldmljZXNCeVBhcnNpbmcocGxhdGZvcm0pO1xuICB9XG5cbiAgaWYgKCFmb3JTZGspIHtcbiAgICByZXR1cm4gZGV2aWNlcztcbiAgfVxuICAvLyBpZiBhIGBmb3JTZGtgIHdhcyBwYXNzZWQgaW4sIHJldHVybiBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIGxpc3RcbiAgaWYgKGRldmljZXNbZm9yU2RrXSkge1xuICAgIHJldHVybiBkZXZpY2VzW2ZvclNka107XG4gIH1cblxuICBsZXQgZXJyTXNnID0gYCcke2ZvclNka30nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IG9mIHNpbWN0bCBTREtzLmA7XG4gIGNvbnN0IGF2YWlsYWJsZVNES3MgPSBfLmtleXMoZGV2aWNlcyk7XG4gIGVyck1zZyArPSBhdmFpbGFibGVTREtzLmxlbmd0aFxuICAgID8gYCBPbmx5IHRoZSBmb2xsb3dpbmcgU2ltdWxhdG9yIFNESyB2ZXJzaW9ucyBhcmUgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtOiAke2F2YWlsYWJsZVNES3Muam9pbignLCAnKX1gXG4gICAgOiBgIE5vIFNpbXVsYXRvciBTREsgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbS4gUGxlYXNlIGluc3RhbGwgc29tZSB2aWEgWGNvZGUgcHJlZmVyZW5jZXMuYDtcbiAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbiB1c2luZyAtLWpzb24gZmxhZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbGF0Zm9ybVZlcnNpb24gLSBUaGUgcGxhdGZvcm0gdmVyc2lvbiBuYW1lLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJy5cbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29ycmVzcG9uZGluZyBydW50aW1lIG5hbWUgZm9yIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgICBwbGF0Zm9ybSB2ZXJzaW9uLlxuICovXG5jb21tYW5kcy5nZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uVmlhSnNvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb25WaWFKc29uIChcbiAgcGxhdGZvcm1WZXJzaW9uLCBwbGF0Zm9ybSA9ICdpT1MnKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsncnVudGltZXMnLCAnLS1qc29uJ10sXG4gIH0pO1xuICBmb3IgKGNvbnN0IHt2ZXJzaW9uLCBpZGVudGlmaWVyLCBuYW1lfSBvZiBKU09OLnBhcnNlKHN0ZG91dCkucnVudGltZXMpIHtcbiAgICBpZiAobm9ybWFsaXplVmVyc2lvbih2ZXJzaW9uKSA9PT0gbm9ybWFsaXplVmVyc2lvbihwbGF0Zm9ybVZlcnNpb24pXG4gICAgICAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChwbGF0Zm9ybS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHVzZSAtLWpzb24gZmxhZyB0byBwYXJzZSBwbGF0Zm9ybSB2ZXJzaW9uYCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxhdGZvcm1WZXJzaW9uIC0gVGhlIHBsYXRmb3JtIHZlcnNpb24gbmFtZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSAnMTAuMycuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIG5hbWUsIGZvciBleGFtcGxlICd3YXRjaE9TJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvcnJlc3BvbmRpbmcgcnVudGltZSBuYW1lIGZvciB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gdmVyc2lvbi5cbiAqL1xuY29tbWFuZHMuZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24gKFxuICBwbGF0Zm9ybVZlcnNpb24sIHBsYXRmb3JtID0gJ2lPUycpIHtcbiAgLy8gVHJ5IHdpdGggcGFyc2luZ1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgICAgYXJnczogWydydW50aW1lcyddLFxuICAgIH0pO1xuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvVXlralFaLzFcbiAgICBjb25zdCBydW50aW1lUmUgPVxuICAgICAgbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9XFxcXHMrKFxcXFxkK1xcXFwuXFxcXGQrKVxcXFxzK1xcXFwoKFxcXFxkK1xcXFwuXFxcXGQrXFxcXC4qXFxcXGQqKWAsICdpJyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcnVudGltZVJlLmV4ZWMobGluZSk7XG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gPT09IHBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gbWF0Y2hbMl07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgLy8gaWYgbm90aGluZyB3YXMgZm91bmQsIHBhc3MgcGxhdGZvcm0gdmVyc2lvbiBiYWNrXG4gIHJldHVybiBwbGF0Zm9ybVZlcnNpb247XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBkZXZpY2UgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IFhjb2RlIGluc3RhbGxhdGlvblxuICpcbiAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59IExpc3Qgb2YgdGhlIHR5cGVzIG9mIGRldmljZXMgYXZhaWxhYmxlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIGNvbW1hbmQgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VUeXBlcyAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnZGV2aWNldHlwZXMnLCAnLWonXSxcbiAgfSk7XG4gIC8qXG4gICAqIEpTT04gd2lsbCBiZSBsaWtlOlxuICAgKiAgIHtcbiAgICogICAgIFwiZGV2aWNldHlwZXNcIiA6IFtcbiAgICogICAgICAge1xuICAgKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNHNcIixcbiAgICogICAgICAgICBcImlkZW50aWZpZXJcIiA6IFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltRGV2aWNlVHlwZS5pUGhvbmUtNHNcIlxuICAgKiAgICAgICB9LFxuICAgKiAgICAgICAuLi5cbiAgICogICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZVR5cGVzID0gSlNPTi5wYXJzZShzdGRvdXQudHJpbSgpKTtcbiAgICByZXR1cm4gZGV2aWNlVHlwZXMuZGV2aWNldHlwZXMubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgbGlzdCBvZiBkZXZpY2UgdHlwZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcnVudGltZXMsIGRldmljZXR5cGVzLCBkZXZpY2VzIGFuZCBwYWlycyBhcyBPYmplY3RcbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IE9iamVjdCBjb250YWluaW5nIGRldmljZSB0eXBlcywgcnVudGltZXMgZGV2aWNlcyBhbmQgcGFpcnMuXG4gKiBUaGUgcmVzdWx0aW5nIEpTT04gd2lsbCBiZSBsaWtlOlxuICogICB7XG4gKiAgICAgXCJkZXZpY2V0eXBlc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcIm5hbWVcIiA6IFwiaVBob25lIDRzXCIsXG4gKiAgICAgICAgIFwiaWRlbnRpZmllclwiIDogXCJjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2VUeXBlLmlQaG9uZS00c1wiXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIF0sXG4gKiAgICAgXCJydW50aW1lc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcInZlcnNpb25cIiA6ICcxMy4wJyxcbiAqICAgICAgICAgXCJidW5kbGVQYXRoXCIgOiAnL0FwcGxpY2F0aW9ucy9YY29kZTExYmV0YTQuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZScsXG4gKiAgICAgICAgIFwiaXNBdmFpbGFibGVcIiA6IHRydWUsXG4gKiAgICAgICAgIFwibmFtZVwiIDogJ2lPUyAxMy4wJyxcbiAqICAgICAgICAgXCJpZGVudGlmaWVyXCIgOiAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCcsXG4gKiAgICAgICAgIFwiYnVpbGR2ZXJzaW9uXCIgOiAnMTdBNTUzNGQnXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIH0sXG4gKiAgICAgXCJkZXZpY2VzXCIgOlxuICogICAgICAge1xuICogICAgICAgICAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCc6IFsgW09iamVjdF0sIFtPYmplY3RdIF0gfSxcbiAqICAgICAgICAgLi4uXG4gKiAgICAgICB9LFxuICogICAgIFwicGFpcnNcIiA6IHt9IH1cbiAqXG4gKiAgIH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgY29tbWFuZCBmYWlsc1xuICovXG5jb21tYW5kcy5saXN0ID0gYXN5bmMgZnVuY3Rpb24gbGlzdCAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnLWonXSxcbiAgfSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0LnRyaW0oKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBzaW1jdGwgbGlzdDogJHtlLm1lc3NhZ2V9YCk7XG4gIH1c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
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","names":["commands","getDevicesByParsing","platform","stdout","exec","args","deviceSectionRe","_","isEmpty","RegExp","escapeRegExp","matches","match","push","Error","lineRe","devices","sdk","line","split","slice","includes","lineMatch","name","udid","state","getDevices","forSdk","versionMatchRe","sdkName","entries","toPairs","JSON","parse","replace","SIM_RUNTIME_NAME","versionMatch","filter","el","isUndefined","isAvailable","map","availability","err","log","debug","LOG_PREFIX","stack","errMsg","availableSDKs","keys","length","join","getRuntimeForPlatformVersionViaJson","platformVersion","version","identifier","runtimes","normalizeVersion","toLowerCase","startsWith","getRuntimeForPlatformVersion","runtimeRe","ign","getDeviceTypes","deviceTypes","trim","devicetypes","type","message","list","e"],"sources":["../../../lib/subcommands/list.js"],"sourcesContent":["import _ from 'lodash';\nimport { SIM_RUNTIME_NAME, normalizeVersion } from '../helpers';\nimport log, { LOG_PREFIX } from '../logger';\n\n\nconst commands = {};\n\n/**\n * @typedef {Object} DeviceInfo\n * @property {string} name - The device name.\n * @property {string} udid - The device UDID.\n * @property {string} state - The current Simulator state, for example 'booted' or 'shutdown'.\n * @property {string} sdk - The SDK version, for example '10.3'.\n */\n\n/**\n * Parse the list of existing Simulator devices to represent\n * it as convenient mapping.\n *\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {Object} The resulting mapping. Each key is platform version,\n * for example '10.3' and the corresponding value is an\n * array of the matching {@link DeviceInfo} instances.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n */\ncommands.getDevicesByParsing = async function getDevicesByParsing (platform) {\n // get the list of devices\n const {stdout} = await this.exec('list', {\n args: ['devices'],\n });\n\n // expect to get a listing like\n // -- iOS 8.1 --\n // iPhone 4s (3CA6E7DD-220E-45E5-B716-1E992B3A429C) (Shutdown)\n // ...\n // -- iOS 8.2 --\n // iPhone 4s (A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E) (Shutdown)\n // ...\n // so, get the `-- iOS X.X --` line to find the sdk (X.X)\n // and the rest of the listing in order to later find the devices\n const deviceSectionRe = _.isEmpty(platform)\n ? new RegExp(`\\\\-\\\\-\\\\s+(\\\\S+)\\\\s+(\\\\S+)\\\\s+\\\\-\\\\-(\\\\n\\\\s{4}.+)*`, 'mgi')\n : new RegExp(`\\\\-\\\\-\\\\s+${_.escapeRegExp(platform)}\\\\s+(\\\\S+)\\\\s+\\\\-\\\\-(\\\\n\\\\s{4}.+)*`, 'mgi');\n const matches = [];\n let match;\n // make an entry for each sdk version\n while ((match = deviceSectionRe.exec(stdout))) {\n matches.push(match);\n }\n if (_.isEmpty(matches)) {\n throw new Error('Could not find device section');\n }\n\n const lineRe = /([^\\s].+) \\((\\w+-.+\\w+)\\) \\((\\w+\\s?\\w+)\\)/; // https://regex101.com/r/lG7mK6/3\n // get all the devices for each sdk\n const devices = {};\n for (match of matches) {\n const sdk = platform ? match[1] : match[2];\n devices[sdk] = devices[sdk] || [];\n // split the full match into lines and remove the first\n for (const line of match[0].split('\\n').slice(1)) {\n if (line.includes('(unavailable, ')) {\n continue;\n }\n // a line is something like\n // iPhone 4s (A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E) (Shutdown)\n // retrieve:\n // iPhone 4s\n // A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E\n // Shutdown\n const lineMatch = lineRe.exec(line);\n if (!lineMatch) {\n throw new Error(`Could not match line: ${line}`);\n }\n // save the whole thing as ab object in the list for this sdk\n devices[sdk].push({\n name: lineMatch[1],\n udid: lineMatch[2],\n state: lineMatch[3],\n sdk,\n platform: platform || match[1],\n });\n }\n }\n return devices;\n};\n\n/**\n * Parse the list of existing Simulator devices to represent\n * it as convenient mapping for the particular platform version.\n *\n * @param {?string} forSdk - The sdk version,\n * for which the devices list should be parsed,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {Object|Array<DeviceInfo>} If _forSdk_ is set then the list\n * of devices for the particular platform version.\n * Otherwise the same result as for {@link getDevicesByParsing}\n * function.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code or if no matching\n * platform version is found in the system.\n */\ncommands.getDevices = async function getDevices (forSdk, platform) {\n let devices = {};\n try {\n const {stdout} = await this.exec('list', {\n args: ['devices', '-j'],\n });\n /* JSON should be\n * {\n * \"devices\" : {\n * \"iOS <sdk>\" : [ // or\n * \"com.apple.CoreSimulator.SimRuntime.iOS-<sdk> : [\n * {\n * \"state\" : \"Booted\",\n * \"availability\" : \"(available)\",\n * \"isAvailable\" : true,\n * \"name\" : \"iPhone 6\",\n * \"udid\" : \"75E34140-18E8-4D1A-9F45-AAC735DF75DF\"\n * }\n * ]\n * }\n * }\n */\n const versionMatchRe = _.isEmpty(platform)\n ? new RegExp(`^([^\\\\s-]+)[\\\\s-](\\\\S+)`, 'i')\n : new RegExp(`^${_.escapeRegExp(platform)}[\\\\s-](\\\\S+)`, 'i');\n for (let [sdkName, entries] of _.toPairs(JSON.parse(stdout).devices)) {\n // there could be a longer name, so remove it\n sdkName = sdkName.replace(SIM_RUNTIME_NAME, '');\n const versionMatch = versionMatchRe.exec(sdkName);\n if (!versionMatch) {\n continue;\n }\n\n // the sdk can have dashes (`12-2`) or dots (`12.1`)\n const sdk = (platform ? versionMatch[1] : versionMatch[2]).replace('-', '.');\n devices[sdk] = devices[sdk] || [];\n devices[sdk].push(...entries.filter((el) => _.isUndefined(el.isAvailable) || el.isAvailable)\n .map((el) => {\n delete el.availability;\n return {\n sdk,\n ...el,\n platform: platform || versionMatch[1],\n };\n })\n );\n }\n } catch (err) {\n log.debug(LOG_PREFIX, `Unable to get JSON device list: ${err.stack}`);\n log.debug(LOG_PREFIX, 'Falling back to manual parsing');\n devices = await this.getDevicesByParsing(platform);\n }\n\n if (!forSdk) {\n return devices;\n }\n // if a `forSdk` was passed in, return only the corresponding list\n if (devices[forSdk]) {\n return devices[forSdk];\n }\n\n let errMsg = `'${forSdk}' does not exist in the list of simctl SDKs.`;\n const availableSDKs = _.keys(devices);\n errMsg += availableSDKs.length\n ? ` Only the following Simulator SDK versions are available on your system: ${availableSDKs.join(', ')}`\n : ` No Simulator SDK versions are available on your system. Please install some via Xcode preferences.`;\n throw new Error(errMsg);\n};\n\n/**\n * Get the runtime for the particular platform version using --json flag\n *\n * @param {string} platformVersion - The platform version name,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {string} The corresponding runtime name for the given\n * platform version.\n */\ncommands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatformVersionViaJson (\n platformVersion, platform = 'iOS') {\n const {stdout} = await this.exec('list', {\n args: ['runtimes', '--json'],\n });\n for (const {version, identifier, name} of JSON.parse(stdout).runtimes) {\n if (normalizeVersion(version) === normalizeVersion(platformVersion)\n && name.toLowerCase().startsWith(platform.toLowerCase())) {\n return identifier;\n }\n }\n throw new Error(`Could not use --json flag to parse platform version`);\n};\n\n/**\n * Get the runtime for the particular platform version.\n *\n * @param {string} platformVersion - The platform version name,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {string} The corresponding runtime name for the given\n * platform version.\n */\ncommands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVersion (\n platformVersion, platform = 'iOS') {\n // Try with parsing\n try {\n const {stdout} = await this.exec('list', {\n args: ['runtimes'],\n });\n // https://regex101.com/r/UykjQZ/1\n const runtimeRe =\n new RegExp(`${_.escapeRegExp(platform)}\\\\s+(\\\\d+\\\\.\\\\d+)\\\\s+\\\\((\\\\d+\\\\.\\\\d+\\\\.*\\\\d*)`, 'i');\n for (const line of stdout.split('\\n')) {\n const match = runtimeRe.exec(line);\n if (match && match[1] === platformVersion) {\n return match[2];\n }\n }\n } catch (ign) {}\n\n // if nothing was found, pass platform version back\n return platformVersion;\n};\n\n/**\n * Get the list of device types available in the current Xcode installation\n *\n * @return {Array<string>} List of the types of devices available\n * @throws {Error} If the corresponding simctl command fails\n */\ncommands.getDeviceTypes = async function getDeviceTypes () {\n const {stdout} = await this.exec('list', {\n args: ['devicetypes', '-j'],\n });\n /*\n * JSON will be like:\n * {\n * \"devicetypes\" : [\n * {\n * \"name\" : \"iPhone 4s\",\n * \"identifier\" : \"com.apple.CoreSimulator.SimDeviceType.iPhone-4s\"\n * },\n * ...\n * }\n */\n try {\n const deviceTypes = JSON.parse(stdout.trim());\n return deviceTypes.devicetypes.map((type) => type.name);\n } catch (err) {\n throw new Error(`Unable to get list of device types: ${err.message}`);\n }\n};\n\n/**\n * Get the full list of runtimes, devicetypes, devices and pairs as Object\n *\n * @return {Object} Object containing device types, runtimes devices and pairs.\n * The resulting JSON will be like:\n * {\n * \"devicetypes\" : [\n * {\n * \"name\" : \"iPhone 4s\",\n * \"identifier\" : \"com.apple.CoreSimulator.SimDeviceType.iPhone-4s\"\n * },\n * ...\n * ],\n * \"runtimes\" : [\n * {\n * \"version\" : '13.0',\n * \"bundlePath\" : '/Applications/Xcode11beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime',\n * \"isAvailable\" : true,\n * \"name\" : 'iOS 13.0',\n * \"identifier\" : 'com.apple.CoreSimulator.SimRuntime.iOS-13-0',\n * \"buildversion\" : '17A5534d'\n * },\n * ...\n * },\n * \"devices\" :\n * {\n * 'com.apple.CoreSimulator.SimRuntime.iOS-13-0': [ [Object], [Object] ] },\n * ...\n * },\n * \"pairs\" : {} }\n *\n * }\n * @throws {Error} If the corresponding simctl command fails\n */\ncommands.list = async function list () {\n const {stdout} = await this.exec('list', {\n args: ['-j'],\n });\n try {\n return JSON.parse(stdout.trim());\n } catch (e) {\n throw new Error(`Unable to parse simctl list: ${e.message}`);\n }\n};\n\nexport default commands;\n"],"mappings":"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"}
1
+ {"version":3,"file":"list.js","names":["commands","getDevicesByParsing","platform","stdout","exec","args","deviceSectionRe","_","isEmpty","RegExp","escapeRegExp","matches","match","push","Error","lineRe","devices","sdk","line","split","slice","includes","lineMatch","name","udid","state","getDevices","forSdk","versionMatchRe","sdkName","entries","toPairs","JSON","parse","replace","SIM_RUNTIME_NAME","versionMatch","filter","el","isUndefined","isAvailable","map","availability","err","log","debug","LOG_PREFIX","stack","errMsg","availableSDKs","keys","length","join","getRuntimeForPlatformVersionViaJson","platformVersion","version","identifier","runtimes","normalizeVersion","toLowerCase","startsWith","getRuntimeForPlatformVersion","runtimeRe","ign","getDeviceTypes","deviceTypes","trim","devicetypes","type","message","list","e"],"sources":["../../../lib/subcommands/list.js"],"sourcesContent":["import _ from 'lodash';\nimport { SIM_RUNTIME_NAME, normalizeVersion } from '../helpers';\nimport log, { LOG_PREFIX } from '../logger';\n\n\nconst commands = {};\n\n/**\n * @typedef {Object} DeviceInfo\n * @property {string} name - The device name.\n * @property {string} udid - The device UDID.\n * @property {string} state - The current Simulator state, for example 'booted' or 'shutdown'.\n * @property {string} sdk - The SDK version, for example '10.3'.\n */\n\n/**\n * Parse the list of existing Simulator devices to represent\n * it as convenient mapping.\n *\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {Object} The resulting mapping. Each key is platform version,\n * for example '10.3' and the corresponding value is an\n * array of the matching {@link DeviceInfo} instances.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n */\ncommands.getDevicesByParsing = async function getDevicesByParsing (platform) {\n // get the list of devices\n const {stdout} = await this.exec('list', {\n args: ['devices'],\n });\n\n // expect to get a listing like\n // -- iOS 8.1 --\n // iPhone 4s (3CA6E7DD-220E-45E5-B716-1E992B3A429C) (Shutdown)\n // ...\n // -- iOS 8.2 --\n // iPhone 4s (A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E) (Shutdown)\n // ...\n // so, get the `-- iOS X.X --` line to find the sdk (X.X)\n // and the rest of the listing in order to later find the devices\n const deviceSectionRe = _.isEmpty(platform)\n ? new RegExp(`\\\\-\\\\-\\\\s+(\\\\S+)\\\\s+(\\\\S+)\\\\s+\\\\-\\\\-(\\\\n\\\\s{4}.+)*`, 'mgi')\n : new RegExp(`\\\\-\\\\-\\\\s+${_.escapeRegExp(platform)}\\\\s+(\\\\S+)\\\\s+\\\\-\\\\-(\\\\n\\\\s{4}.+)*`, 'mgi');\n const matches = [];\n let match;\n // make an entry for each sdk version\n while ((match = deviceSectionRe.exec(stdout))) {\n matches.push(match);\n }\n if (_.isEmpty(matches)) {\n throw new Error('Could not find device section');\n }\n\n const lineRe = /([^\\s].+) \\((\\w+-.+\\w+)\\) \\((\\w+\\s?\\w+)\\)/; // https://regex101.com/r/lG7mK6/3\n // get all the devices for each sdk\n const devices = {};\n for (match of matches) {\n const sdk = platform ? match[1] : match[2];\n devices[sdk] = devices[sdk] || [];\n // split the full match into lines and remove the first\n for (const line of match[0].split('\\n').slice(1)) {\n if (line.includes('(unavailable, ')) {\n continue;\n }\n // a line is something like\n // iPhone 4s (A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E) (Shutdown)\n // retrieve:\n // iPhone 4s\n // A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E\n // Shutdown\n const lineMatch = lineRe.exec(line);\n if (!lineMatch) {\n throw new Error(`Could not match line: ${line}`);\n }\n // save the whole thing as ab object in the list for this sdk\n devices[sdk].push({\n name: lineMatch[1],\n udid: lineMatch[2],\n state: lineMatch[3],\n sdk,\n platform: platform || match[1],\n });\n }\n }\n return devices;\n};\n\n/**\n * Parse the list of existing Simulator devices to represent\n * it as convenient mapping for the particular platform version.\n *\n * @param {?string} forSdk - The sdk version,\n * for which the devices list should be parsed,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {Object|Array<DeviceInfo>} If _forSdk_ is set then the list\n * of devices for the particular platform version.\n * Otherwise the same result as for {@link getDevicesByParsing}\n * function.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code or if no matching\n * platform version is found in the system.\n */\ncommands.getDevices = async function getDevices (forSdk, platform) {\n let devices = {};\n try {\n const {stdout} = await this.exec('list', {\n args: ['devices', '-j'],\n });\n /* JSON should be\n * {\n * \"devices\" : {\n * \"iOS <sdk>\" : [ // or\n * \"com.apple.CoreSimulator.SimRuntime.iOS-<sdk> : [\n * {\n * \"state\" : \"Booted\",\n * \"availability\" : \"(available)\",\n * \"isAvailable\" : true,\n * \"name\" : \"iPhone 6\",\n * \"udid\" : \"75E34140-18E8-4D1A-9F45-AAC735DF75DF\"\n * }\n * ]\n * }\n * }\n */\n const versionMatchRe = _.isEmpty(platform)\n ? new RegExp(`^([^\\\\s-]+)[\\\\s-](\\\\S+)`, 'i')\n : new RegExp(`^${_.escapeRegExp(platform)}[\\\\s-](\\\\S+)`, 'i');\n for (let [sdkName, entries] of _.toPairs(JSON.parse(stdout).devices)) {\n // there could be a longer name, so remove it\n sdkName = sdkName.replace(SIM_RUNTIME_NAME, '');\n const versionMatch = versionMatchRe.exec(sdkName);\n if (!versionMatch) {\n continue;\n }\n\n // the sdk can have dashes (`12-2`) or dots (`12.1`)\n const sdk = (platform ? versionMatch[1] : versionMatch[2]).replace('-', '.');\n devices[sdk] = devices[sdk] || [];\n devices[sdk].push(...entries.filter((el) => _.isUndefined(el.isAvailable) || el.isAvailable)\n .map((el) => {\n delete el.availability;\n return {\n sdk,\n ...el,\n platform: platform || versionMatch[1],\n };\n })\n );\n }\n } catch (err) {\n log.debug(LOG_PREFIX, `Unable to get JSON device list: ${err.stack}`);\n log.debug(LOG_PREFIX, 'Falling back to manual parsing');\n devices = await this.getDevicesByParsing(platform);\n }\n\n if (!forSdk) {\n return devices;\n }\n // if a `forSdk` was passed in, return only the corresponding list\n if (devices[forSdk]) {\n return devices[forSdk];\n }\n\n let errMsg = `'${forSdk}' does not exist in the list of simctl SDKs.`;\n const availableSDKs = _.keys(devices);\n errMsg += availableSDKs.length\n ? ` Only the following Simulator SDK versions are available on your system: ${availableSDKs.join(', ')}`\n : ` No Simulator SDK versions are available on your system. Please install some via Xcode preferences.`;\n throw new Error(errMsg);\n};\n\n/**\n * Get the runtime for the particular platform version using --json flag\n *\n * @param {string} platformVersion - The platform version name,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {string} The corresponding runtime name for the given\n * platform version.\n */\ncommands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatformVersionViaJson (\n platformVersion, platform = 'iOS') {\n const {stdout} = await this.exec('list', {\n args: ['runtimes', '--json'],\n });\n for (const {version, identifier, name} of JSON.parse(stdout).runtimes) {\n if (normalizeVersion(version) === normalizeVersion(platformVersion)\n && name.toLowerCase().startsWith(platform.toLowerCase())) {\n return identifier;\n }\n }\n throw new Error(`Could not use --json flag to parse platform version`);\n};\n\n/**\n * Get the runtime for the particular platform version.\n *\n * @param {string} platformVersion - The platform version name,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {string} The corresponding runtime name for the given\n * platform version.\n */\ncommands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVersion (\n platformVersion, platform = 'iOS') {\n // Try with parsing\n try {\n const {stdout} = await this.exec('list', {\n args: ['runtimes'],\n });\n // https://regex101.com/r/UykjQZ/1\n const runtimeRe =\n new RegExp(`${_.escapeRegExp(platform)}\\\\s+(\\\\d+\\\\.\\\\d+)\\\\s+\\\\((\\\\d+\\\\.\\\\d+\\\\.*\\\\d*)`, 'i');\n for (const line of stdout.split('\\n')) {\n const match = runtimeRe.exec(line);\n if (match && match[1] === platformVersion) {\n return match[2];\n }\n }\n } catch (ign) {}\n\n // if nothing was found, pass platform version back\n return platformVersion;\n};\n\n/**\n * Get the list of device types available in the current Xcode installation\n *\n * @return {Array<string>} List of the types of devices available\n * @throws {Error} If the corresponding simctl command fails\n */\ncommands.getDeviceTypes = async function getDeviceTypes () {\n const {stdout} = await this.exec('list', {\n args: ['devicetypes', '-j'],\n });\n /*\n * JSON will be like:\n * {\n * \"devicetypes\" : [\n * {\n * \"name\" : \"iPhone 4s\",\n * \"identifier\" : \"com.apple.CoreSimulator.SimDeviceType.iPhone-4s\"\n * },\n * ...\n * }\n */\n try {\n const deviceTypes = JSON.parse(stdout.trim());\n return deviceTypes.devicetypes.map((type) => type.name);\n } catch (err) {\n throw new Error(`Unable to get list of device types: ${err.message}`);\n }\n};\n\n/**\n * Get the full list of runtimes, devicetypes, devices and pairs as Object\n *\n * @return {Object} Object containing device types, runtimes devices and pairs.\n * The resulting JSON will be like:\n * {\n * \"devicetypes\" : [\n * {\n * \"name\" : \"iPhone 4s\",\n * \"identifier\" : \"com.apple.CoreSimulator.SimDeviceType.iPhone-4s\"\n * },\n * ...\n * ],\n * \"runtimes\" : [\n * {\n * \"version\" : '13.0',\n * \"bundlePath\" : '/Applications/Xcode11beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime',\n * \"isAvailable\" : true,\n * \"name\" : 'iOS 13.0',\n * \"identifier\" : 'com.apple.CoreSimulator.SimRuntime.iOS-13-0',\n * \"buildversion\" : '17A5534d'\n * },\n * ...\n * },\n * \"devices\" :\n * {\n * 'com.apple.CoreSimulator.SimRuntime.iOS-13-0': [ [Object], [Object] ] },\n * ...\n * },\n * \"pairs\" : {} }\n *\n * }\n * @throws {Error} If the corresponding simctl command fails\n */\ncommands.list = async function list () {\n const {stdout} = await this.exec('list', {\n args: ['-j'],\n });\n try {\n return JSON.parse(stdout.trim());\n } catch (e) {\n throw new Error(`Unable to parse simctl list: ${e.message}`);\n }\n};\n\nexport default commands;\n"],"mappings":"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"}
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  require("source-map-support/register");
8
8
  const commands = {};
9
-
10
9
  function formatArg(name, value) {
11
10
  const flt = parseFloat(value);
12
11
  if (isNaN(flt)) {
@@ -14,7 +13,6 @@ function formatArg(name, value) {
14
13
  }
15
14
  return flt.toFixed(7);
16
15
  }
17
-
18
16
  commands.setLocation = async function setLocation(latitude, longitude) {
19
17
  const lat = formatArg('latitude', latitude);
20
18
  const lon = formatArg('longitude', longitude);
@@ -22,7 +20,6 @@ commands.setLocation = async function setLocation(latitude, longitude) {
22
20
  args: [this.requireUdid('location'), 'set', `${lat},${lon}`]
23
21
  });
24
22
  };
25
-
26
23
  commands.clearLocation = async function clearLocation() {
27
24
  await this.exec('location', {
28
25
  args: [this.requireUdid('location'), 'clear']
@@ -30,4 +27,4 @@ commands.clearLocation = async function clearLocation() {
30
27
  };
31
28
  var _default = commands;
32
29
  exports.default = _default;
33
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImZvcm1hdEFyZyIsIm5hbWUiLCJ2YWx1ZSIsImZsdCIsInBhcnNlRmxvYXQiLCJpc05hTiIsIlR5cGVFcnJvciIsInRvRml4ZWQiLCJzZXRMb2NhdGlvbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwibGF0IiwibG9uIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImNsZWFyTG9jYXRpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvbG9jYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBGb3JtYXRzIHRoZSBnaXZlbiBsb2NhdGlvbiBhcmd1bWVudCBmb3Igc2ltY3RsIHVzYWdlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQXJndW1lbnQgbmFtZVxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZSBMb2NhdGlvbiBhcmd1bWVudCB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ30gRm9ybWF0dGVkIHZhbHVlLCBmb3IgZXhhbXBsZSAtNzMuNzY4MjU0XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEFyZyAobmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgZmx0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gIGlmIChpc05hTihmbHQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgbnVtYmVyLCBnb3QgJyR7dmFsdWV9JyBpbnN0ZWFkYCk7XG4gIH1cbiAgcmV0dXJuIGZsdC50b0ZpeGVkKDcpO1xufVxuXG4vKipcbiAqIFNldCB0aGUgU2ltdWxhdG9yIGxvY2F0aW9uIHRvIGEgc3BlY2lmaWMgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZS5cbiAqIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSBYY29kZSAxNC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxhdGl0dWRlIExvY2F0aW9uIGxhdGl0dWRlIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxvbmdpdHVkZSBMb2NhdGlvbiBsb25naXR1ZGUgdmFsdWVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZS5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgbm90IGEgdmFsaWQgdmFsdWUuXG4gKi9cbmNvbW1hbmRzLnNldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb24gKGxhdGl0dWRlLCBsb25naXR1ZGUpIHtcbiAgY29uc3QgbGF0ID0gZm9ybWF0QXJnKCdsYXRpdHVkZScsIGxhdGl0dWRlKTtcbiAgY29uc3QgbG9uID0gZm9ybWF0QXJnKCdsb25naXR1ZGUnLCBsb25naXR1ZGUpO1xuICBhd2FpdCB0aGlzLmV4ZWMoJ2xvY2F0aW9uJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsb2NhdGlvbicpLCAnc2V0JywgYCR7bGF0fSwke2xvbn1gXSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIFN0b3AgYW55IHJ1bm5pbmcgc2NlbmFyaW8gYW5kIGNsZWFyIGFueSBzaW11bGF0ZWQgbG9jYXRpb24uXG4gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBhdmFpbGFibGUgc2luY2UgWGNvZGUgMTQuXG4gKi9cbmNvbW1hbmRzLmNsZWFyTG9jYXRpb24gPSBhc3luYyBmdW5jdGlvbiBjbGVhckxvY2F0aW9uICgpIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdsb2NhdGlvbicsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgnbG9jYXRpb24nKSwgJ2NsZWFyJ10sXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsQ0FBQyxDQUFDOztBQVNuQixTQUFTQyxTQUFTLENBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFO0VBQy9CLE1BQU1DLEdBQUcsR0FBR0MsVUFBVSxDQUFDRixLQUFLLENBQUM7RUFDN0IsSUFBSUcsS0FBSyxDQUFDRixHQUFHLENBQUMsRUFBRTtJQUNkLE1BQU0sSUFBSUcsU0FBUyxDQUFFLEdBQUVMLElBQUssaUNBQWdDQyxLQUFNLFdBQVUsQ0FBQztFQUMvRTtFQUNBLE9BQU9DLEdBQUcsQ0FBQ0ksT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2Qjs7QUFZQVIsUUFBUSxDQUFDUyxXQUFXLEdBQUcsZUFBZUEsV0FBVyxDQUFFQyxRQUFRLEVBQUVDLFNBQVMsRUFBRTtFQUN0RSxNQUFNQyxHQUFHLEdBQUdYLFNBQVMsQ0FBQyxVQUFVLEVBQUVTLFFBQVEsQ0FBQztFQUMzQyxNQUFNRyxHQUFHLEdBQUdaLFNBQVMsQ0FBQyxXQUFXLEVBQUVVLFNBQVMsQ0FBQztFQUM3QyxNQUFNLElBQUksQ0FBQ0csSUFBSSxDQUFDLFVBQVUsRUFBRTtJQUMxQkMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFHLEdBQUVKLEdBQUksSUFBR0MsR0FBSSxFQUFDO0VBQzdELENBQUMsQ0FBQztBQUNKLENBQUM7O0FBTURiLFFBQVEsQ0FBQ2lCLGFBQWEsR0FBRyxlQUFlQSxhQUFhLEdBQUk7RUFDdkQsTUFBTSxJQUFJLENBQUNILElBQUksQ0FBQyxVQUFVLEVBQUU7SUFDMUJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU87RUFDOUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLGVBRWFoQixRQUFRO0FBQUEifQ==
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImZvcm1hdEFyZyIsIm5hbWUiLCJ2YWx1ZSIsImZsdCIsInBhcnNlRmxvYXQiLCJpc05hTiIsIlR5cGVFcnJvciIsInRvRml4ZWQiLCJzZXRMb2NhdGlvbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwibGF0IiwibG9uIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImNsZWFyTG9jYXRpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvbG9jYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBGb3JtYXRzIHRoZSBnaXZlbiBsb2NhdGlvbiBhcmd1bWVudCBmb3Igc2ltY3RsIHVzYWdlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQXJndW1lbnQgbmFtZVxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZSBMb2NhdGlvbiBhcmd1bWVudCB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ30gRm9ybWF0dGVkIHZhbHVlLCBmb3IgZXhhbXBsZSAtNzMuNzY4MjU0XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEFyZyAobmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgZmx0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gIGlmIChpc05hTihmbHQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgbnVtYmVyLCBnb3QgJyR7dmFsdWV9JyBpbnN0ZWFkYCk7XG4gIH1cbiAgcmV0dXJuIGZsdC50b0ZpeGVkKDcpO1xufVxuXG4vKipcbiAqIFNldCB0aGUgU2ltdWxhdG9yIGxvY2F0aW9uIHRvIGEgc3BlY2lmaWMgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZS5cbiAqIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSBYY29kZSAxNC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxhdGl0dWRlIExvY2F0aW9uIGxhdGl0dWRlIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxvbmdpdHVkZSBMb2NhdGlvbiBsb25naXR1ZGUgdmFsdWVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZS5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgbm90IGEgdmFsaWQgdmFsdWUuXG4gKi9cbmNvbW1hbmRzLnNldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb24gKGxhdGl0dWRlLCBsb25naXR1ZGUpIHtcbiAgY29uc3QgbGF0ID0gZm9ybWF0QXJnKCdsYXRpdHVkZScsIGxhdGl0dWRlKTtcbiAgY29uc3QgbG9uID0gZm9ybWF0QXJnKCdsb25naXR1ZGUnLCBsb25naXR1ZGUpO1xuICBhd2FpdCB0aGlzLmV4ZWMoJ2xvY2F0aW9uJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsb2NhdGlvbicpLCAnc2V0JywgYCR7bGF0fSwke2xvbn1gXSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIFN0b3AgYW55IHJ1bm5pbmcgc2NlbmFyaW8gYW5kIGNsZWFyIGFueSBzaW11bGF0ZWQgbG9jYXRpb24uXG4gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBhdmFpbGFibGUgc2luY2UgWGNvZGUgMTQuXG4gKi9cbmNvbW1hbmRzLmNsZWFyTG9jYXRpb24gPSBhc3luYyBmdW5jdGlvbiBjbGVhckxvY2F0aW9uICgpIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdsb2NhdGlvbicsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgnbG9jYXRpb24nKSwgJ2NsZWFyJ10sXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBU25CLFNBQVNDLFNBQVMsQ0FBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUU7RUFDL0IsTUFBTUMsR0FBRyxHQUFHQyxVQUFVLENBQUNGLEtBQUssQ0FBQztFQUM3QixJQUFJRyxLQUFLLENBQUNGLEdBQUcsQ0FBQyxFQUFFO0lBQ2QsTUFBTSxJQUFJRyxTQUFTLENBQUUsR0FBRUwsSUFBSyxpQ0FBZ0NDLEtBQU0sV0FBVSxDQUFDO0VBQy9FO0VBQ0EsT0FBT0MsR0FBRyxDQUFDSSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCO0FBWUFSLFFBQVEsQ0FBQ1MsV0FBVyxHQUFHLGVBQWVBLFdBQVcsQ0FBRUMsUUFBUSxFQUFFQyxTQUFTLEVBQUU7RUFDdEUsTUFBTUMsR0FBRyxHQUFHWCxTQUFTLENBQUMsVUFBVSxFQUFFUyxRQUFRLENBQUM7RUFDM0MsTUFBTUcsR0FBRyxHQUFHWixTQUFTLENBQUMsV0FBVyxFQUFFVSxTQUFTLENBQUM7RUFDN0MsTUFBTSxJQUFJLENBQUNHLElBQUksQ0FBQyxVQUFVLEVBQUU7SUFDMUJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRyxHQUFFSixHQUFJLElBQUdDLEdBQUksRUFBQztFQUM3RCxDQUFDLENBQUM7QUFDSixDQUFDO0FBTURiLFFBQVEsQ0FBQ2lCLGFBQWEsR0FBRyxlQUFlQSxhQUFhLEdBQUk7RUFDdkQsTUFBTSxJQUFJLENBQUNILElBQUksQ0FBQyxVQUFVLEVBQUU7SUFDMUJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU87RUFDOUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLGVBRWFoQixRQUFRO0FBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"location.js","names":["commands","formatArg","name","value","flt","parseFloat","isNaN","TypeError","toFixed","setLocation","latitude","longitude","lat","lon","exec","args","requireUdid","clearLocation"],"sources":["../../../lib/subcommands/location.js"],"sourcesContent":["const commands = {};\n\n/**\n * Formats the given location argument for simctl usage\n *\n * @param {string} name Argument name\n * @param {string|number} value Location argument value\n * @returns {string} Formatted value, for example -73.768254\n */\nfunction formatArg (name, value) {\n const flt = parseFloat(value);\n if (isNaN(flt)) {\n throw new TypeError(`${name} must be a valid number, got '${value}' instead`);\n }\n return flt.toFixed(7);\n}\n\n/**\n * Set the Simulator location to a specific latitude and longitude.\n * This functionality is only available since Xcode 14.\n *\n * @param {string|number} latitude Location latitude value\n * @param {string|number} longitude Location longitude value\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {TypeError} If any of the arguments is not a valid value.\n */\ncommands.setLocation = async function setLocation (latitude, longitude) {\n const lat = formatArg('latitude', latitude);\n const lon = formatArg('longitude', longitude);\n await this.exec('location', {\n args: [this.requireUdid('location'), 'set', `${lat},${lon}`],\n });\n};\n\n/**\n * Stop any running scenario and clear any simulated location.\n * This functionality is only available since Xcode 14.\n */\ncommands.clearLocation = async function clearLocation () {\n await this.exec('location', {\n args: [this.requireUdid('location'), 'clear'],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AASnB,SAASC,SAAS,CAAEC,IAAI,EAAEC,KAAK,EAAE;EAC/B,MAAMC,GAAG,GAAGC,UAAU,CAACF,KAAK,CAAC;EAC7B,IAAIG,KAAK,CAACF,GAAG,CAAC,EAAE;IACd,MAAM,IAAIG,SAAS,CAAE,GAAEL,IAAK,iCAAgCC,KAAM,WAAU,CAAC;EAC/E;EACA,OAAOC,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC;AACvB;;AAYAR,QAAQ,CAACS,WAAW,GAAG,eAAeA,WAAW,CAAEC,QAAQ,EAAEC,SAAS,EAAE;EACtE,MAAMC,GAAG,GAAGX,SAAS,CAAC,UAAU,EAAES,QAAQ,CAAC;EAC3C,MAAMG,GAAG,GAAGZ,SAAS,CAAC,WAAW,EAAEU,SAAS,CAAC;EAC7C,MAAM,IAAI,CAACG,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAG,GAAEJ,GAAI,IAAGC,GAAI,EAAC;EAC7D,CAAC,CAAC;AACJ,CAAC;;AAMDb,QAAQ,CAACiB,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAM,IAAI,CAACH,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC,EAAE,OAAO;EAC9C,CAAC,CAAC;AACJ,CAAC;AAAC,eAEahB,QAAQ;AAAA"}
1
+ {"version":3,"file":"location.js","names":["commands","formatArg","name","value","flt","parseFloat","isNaN","TypeError","toFixed","setLocation","latitude","longitude","lat","lon","exec","args","requireUdid","clearLocation"],"sources":["../../../lib/subcommands/location.js"],"sourcesContent":["const commands = {};\n\n/**\n * Formats the given location argument for simctl usage\n *\n * @param {string} name Argument name\n * @param {string|number} value Location argument value\n * @returns {string} Formatted value, for example -73.768254\n */\nfunction formatArg (name, value) {\n const flt = parseFloat(value);\n if (isNaN(flt)) {\n throw new TypeError(`${name} must be a valid number, got '${value}' instead`);\n }\n return flt.toFixed(7);\n}\n\n/**\n * Set the Simulator location to a specific latitude and longitude.\n * This functionality is only available since Xcode 14.\n *\n * @param {string|number} latitude Location latitude value\n * @param {string|number} longitude Location longitude value\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {TypeError} If any of the arguments is not a valid value.\n */\ncommands.setLocation = async function setLocation (latitude, longitude) {\n const lat = formatArg('latitude', latitude);\n const lon = formatArg('longitude', longitude);\n await this.exec('location', {\n args: [this.requireUdid('location'), 'set', `${lat},${lon}`],\n });\n};\n\n/**\n * Stop any running scenario and clear any simulated location.\n * This functionality is only available since Xcode 14.\n */\ncommands.clearLocation = async function clearLocation () {\n await this.exec('location', {\n args: [this.requireUdid('location'), 'clear'],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AASnB,SAASC,SAAS,CAAEC,IAAI,EAAEC,KAAK,EAAE;EAC/B,MAAMC,GAAG,GAAGC,UAAU,CAACF,KAAK,CAAC;EAC7B,IAAIG,KAAK,CAACF,GAAG,CAAC,EAAE;IACd,MAAM,IAAIG,SAAS,CAAE,GAAEL,IAAK,iCAAgCC,KAAM,WAAU,CAAC;EAC/E;EACA,OAAOC,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC;AACvB;AAYAR,QAAQ,CAACS,WAAW,GAAG,eAAeA,WAAW,CAAEC,QAAQ,EAAEC,SAAS,EAAE;EACtE,MAAMC,GAAG,GAAGX,SAAS,CAAC,UAAU,EAAES,QAAQ,CAAC;EAC3C,MAAMG,GAAG,GAAGZ,SAAS,CAAC,WAAW,EAAEU,SAAS,CAAC;EAC7C,MAAM,IAAI,CAACG,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAG,GAAEJ,GAAI,IAAGC,GAAI,EAAC;EAC7D,CAAC,CAAC;AACJ,CAAC;AAMDb,QAAQ,CAACiB,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAM,IAAI,CAACH,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC,EAAE,OAAO;EAC9C,CAAC,CAAC;AACJ,CAAC;AAAC,eAEahB,QAAQ;AAAA"}