node-simctl 7.1.17 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/build/lib/simctl.js +9 -3
- package/build/lib/simctl.js.map +1 -1
- package/build/lib/subcommands/addmedia.js +1 -1
- package/build/lib/subcommands/addmedia.js.map +1 -1
- package/build/lib/subcommands/appinfo.js +1 -1
- package/build/lib/subcommands/appinfo.js.map +1 -1
- package/build/lib/subcommands/bootstatus.js +1 -1
- package/build/lib/subcommands/bootstatus.js.map +1 -1
- package/build/lib/subcommands/create.js +1 -1
- package/build/lib/subcommands/create.js.map +1 -1
- package/build/lib/subcommands/get_app_container.js +1 -1
- package/build/lib/subcommands/get_app_container.js.map +1 -1
- package/build/lib/subcommands/getenv.js +1 -1
- package/build/lib/subcommands/getenv.js.map +1 -1
- package/build/lib/subcommands/io.js +1 -1
- package/build/lib/subcommands/io.js.map +1 -1
- package/build/lib/subcommands/launch.js +1 -1
- package/build/lib/subcommands/launch.js.map +1 -1
- package/build/lib/subcommands/list.js +1 -1
- package/build/lib/subcommands/list.js.map +1 -1
- package/build/lib/subcommands/openurl.js +1 -1
- package/build/lib/subcommands/openurl.js.map +1 -1
- package/build/lib/subcommands/pbcopy.js +1 -1
- package/build/lib/subcommands/pbcopy.js.map +1 -1
- package/build/lib/subcommands/pbpaste.js +1 -1
- package/build/lib/subcommands/pbpaste.js.map +1 -1
- package/build/lib/subcommands/spawn.js +1 -1
- package/build/lib/subcommands/spawn.js.map +1 -1
- package/build/lib/subcommands/ui.js +1 -1
- package/build/lib/subcommands/ui.js.map +1 -1
- package/lib/simctl.js +21 -11
- package/lib/subcommands/addmedia.js +1 -1
- package/lib/subcommands/appinfo.js +1 -1
- package/lib/subcommands/bootstatus.js +8 -8
- package/lib/subcommands/create.js +2 -2
- package/lib/subcommands/get_app_container.js +2 -2
- package/lib/subcommands/getenv.js +1 -1
- package/lib/subcommands/io.js +1 -1
- package/lib/subcommands/launch.js +1 -1
- package/lib/subcommands/list.js +9 -9
- package/lib/subcommands/openurl.js +1 -1
- package/lib/subcommands/pbcopy.js +1 -1
- package/lib/subcommands/pbpaste.js +1 -1
- package/lib/subcommands/spawn.js +4 -4
- package/lib/subcommands/ui.js +1 -1
- package/package.json +1 -1
|
@@ -154,4 +154,4 @@ commands.list = async function list() {
|
|
|
154
154
|
};
|
|
155
155
|
var _default = commands;
|
|
156
156
|
exports.default = _default;
|
|
157
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfaGVscGVycyIsIl9sb2dnZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJjb21tYW5kcyIsImdldERldmljZXNCeVBhcnNpbmciLCJwbGF0Zm9ybSIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwiZGV2aWNlU2VjdGlvblJlIiwiXyIsImlzRW1wdHkiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaGVzIiwibWF0Y2giLCJwdXNoIiwiRXJyb3IiLCJsaW5lUmUiLCJkZXZpY2VzIiwic2RrIiwibGluZSIsInNwbGl0Iiwic2xpY2UiLCJpbmNsdWRlcyIsImxpbmVNYXRjaCIsIm5hbWUiLCJ1ZGlkIiwic3RhdGUiLCJnZXREZXZpY2VzIiwiZm9yU2RrIiwidmVyc2lvbk1hdGNoUmUiLCJzZGtOYW1lIiwiZW50cmllcyIsInRvUGFpcnMiLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwiU0lNX1JVTlRJTUVfTkFNRSIsInZlcnNpb25NYXRjaCIsImZpbHRlciIsImVsIiwiaXNVbmRlZmluZWQiLCJpc0F2YWlsYWJsZSIsIm1hcCIsImF2YWlsYWJpbGl0eSIsImVyciIsImxvZyIsImRlYnVnIiwiTE9HX1BSRUZJWCIsInN0YWNrIiwiZXJyTXNnIiwiYXZhaWxhYmxlU0RLcyIsImtleXMiLCJsZW5ndGgiLCJqb2luIiwiZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24iLCJwbGF0Zm9ybVZlcnNpb24iLCJ2ZXJzaW9uIiwiaWRlbnRpZmllciIsInJ1bnRpbWVzIiwibm9ybWFsaXplVmVyc2lvbiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24iLCJydW50aW1lUmUiLCJpZ24iLCJnZXREZXZpY2VUeXBlcyIsImRldmljZVR5cGVzIiwidHJpbSIsImRldmljZXR5cGVzIiwidHlwZSIsIm1lc3NhZ2UiLCJsaXN0IiwiZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTSU1fUlVOVElNRV9OQU1FLCBub3JtYWxpemVWZXJzaW9uIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgbG9nLCB7IExPR19QUkVGSVggfSBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgZGV2aWNlIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdWRpZCAtIFRoZSBkZXZpY2UgVURJRC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBjdXJyZW50IFNpbXVsYXRvciBzdGF0ZSwgZm9yIGV4YW1wbGUgJ2Jvb3RlZCcgb3IgJ3NodXRkb3duJy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZGsgLSBUaGUgU0RLIHZlcnNpb24sIGZvciBleGFtcGxlICcxMC4zJy5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIFNpbXVsYXRvciBkZXZpY2VzIHRvIHJlcHJlc2VudFxuICogaXQgYXMgY29udmVuaWVudCBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIG1hcHBpbmcuIEVhY2gga2V5IGlzIHBsYXRmb3JtIHZlcnNpb24sXG4gKiAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgYW5cbiAqICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgdGhlIG1hdGNoaW5nIHtAbGluayBEZXZpY2VJbmZvfSBpbnN0YW5jZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXNCeVBhcnNpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzQnlQYXJzaW5nIChwbGF0Zm9ybSkge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ2RldmljZXMnXSxcbiAgfSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGNvbnN0IGRldmljZVNlY3Rpb25SZSA9IF8uaXNFbXB0eShwbGF0Zm9ybSlcbiAgICA/IG5ldyBSZWdFeHAoYFxcXFwtXFxcXC1cXFxccysoXFxcXFMrKVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKVxuICAgIDogbmV3IFJlZ0V4cChgXFxcXC1cXFxcLVxcXFxzKyR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKTtcbiAgY29uc3QgbWF0Y2hlcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKChtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCkpKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG1hdGNoZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgbGluZVJlID0gLyhbXlxcc10uKykgXFwoKFxcdystLitcXHcrKVxcKSBcXCgoXFx3K1xccz9cXHcrKVxcKS87IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvbEc3bUs2LzNcbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgY29uc3QgZGV2aWNlcyA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBjb25zdCBzZGsgPSBwbGF0Zm9ybSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMF0uc3BsaXQoJ1xcbicpLnNsaWNlKDEpKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnKHVuYXZhaWxhYmxlLCAnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBjb25zdCBsaW5lTWF0Y2ggPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbGluZU1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGxpbmU6ICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICAgIHNkayxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IG1hdGNoWzFdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXZpY2VzO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbGlzdCBvZiBleGlzdGluZyBTaW11bGF0b3IgZGV2aWNlcyB0byByZXByZXNlbnRcbiAqIGl0IGFzIGNvbnZlbmllbnQgbWFwcGluZyBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGZvclNkayAtIFRoZSBzZGsgdmVyc2lvbixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBkZXZpY2VzIGxpc3Qgc2hvdWxkIGJlIHBhcnNlZCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtPYmplY3R8QXJyYXk8RGV2aWNlSW5mbz59IElmIF9mb3JTZGtfIGlzIHNldCB0aGVuIHRoZSBsaXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGRldmljZXMgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB0aGUgc2FtZSByZXN1bHQgYXMgZm9yIHtAbGluayBnZXREZXZpY2VzQnlQYXJzaW5nfVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZSBvciBpZiBubyBtYXRjaGluZ1xuICogICAgICAgICAgICAgICAgIHBsYXRmb3JtIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIHN5c3RlbS5cbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZXMgKGZvclNkaywgcGxhdGZvcm0pIHtcbiAgbGV0IGRldmljZXMgPSB7fTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICAgIGFyZ3M6IFsnZGV2aWNlcycsICctaiddLFxuICAgIH0pO1xuICAgIC8qIEpTT04gc2hvdWxkIGJlXG4gICAgICoge1xuICAgICAqICAgXCJkZXZpY2VzXCIgOiB7XG4gICAgICogICAgIFwiaU9TIDxzZGs+XCIgOiBbIC8vIG9yXG4gICAgICogICAgIFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtPHNkaz4gOiBbXG4gICAgICogICAgICAge1xuICAgICAqICAgICAgICAgXCJzdGF0ZVwiIDogXCJCb290ZWRcIixcbiAgICAgKiAgICAgICAgIFwiYXZhaWxhYmlsaXR5XCIgOiBcIihhdmFpbGFibGUpXCIsXG4gICAgICogICAgICAgICBcImlzQXZhaWxhYmxlXCIgOiB0cnVlLFxuICAgICAqICAgICAgICAgXCJuYW1lXCIgOiBcImlQaG9uZSA2XCIsXG4gICAgICogICAgICAgICBcInVkaWRcIiA6IFwiNzVFMzQxNDAtMThFOC00RDFBLTlGNDUtQUFDNzM1REY3NURGXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIF1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgY29uc3QgdmVyc2lvbk1hdGNoUmUgPSBfLmlzRW1wdHkocGxhdGZvcm0pXG4gICAgICA/IG5ldyBSZWdFeHAoYF4oW15cXFxccy1dKylbXFxcXHMtXShcXFxcUyspYCwgJ2knKVxuICAgICAgOiBuZXcgUmVnRXhwKGBeJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9W1xcXFxzLV0oXFxcXFMrKWAsICdpJyk7XG4gICAgZm9yIChsZXQgW3Nka05hbWUsIGVudHJpZXNdIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHN0ZG91dCkuZGV2aWNlcykpIHtcbiAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGEgbG9uZ2VyIG5hbWUsIHNvIHJlbW92ZSBpdFxuICAgICAgc2RrTmFtZSA9IHNka05hbWUucmVwbGFjZShTSU1fUlVOVElNRV9OQU1FLCAnJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSB2ZXJzaW9uTWF0Y2hSZS5leGVjKHNka05hbWUpO1xuICAgICAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBzZGsgY2FuIGhhdmUgZGFzaGVzIChgMTItMmApIG9yIGRvdHMgKGAxMi4xYClcbiAgICAgIGNvbnN0IHNkayA9IChwbGF0Zm9ybSA/IHZlcnNpb25NYXRjaFsxXSA6IHZlcnNpb25NYXRjaFsyXSkucmVwbGFjZSgnLScsICcuJyk7XG4gICAgICBkZXZpY2VzW3Nka10gPSBkZXZpY2VzW3Nka10gfHwgW107XG4gICAgICBkZXZpY2VzW3Nka10ucHVzaCguLi5lbnRyaWVzLmZpbHRlcigoZWwpID0+IF8uaXNVbmRlZmluZWQoZWwuaXNBdmFpbGFibGUpIHx8IGVsLmlzQXZhaWxhYmxlKVxuICAgICAgICAubWFwKChlbCkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbC5hdmFpbGFiaWxpdHk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNkayxcbiAgICAgICAgICAgIC4uLmVsLFxuICAgICAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IHZlcnNpb25NYXRjaFsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhMT0dfUFJFRklYLCBgVW5hYmxlIHRvIGdldCBKU09OIGRldmljZSBsaXN0OiAke2Vyci5zdGFja31gKTtcbiAgICBsb2cuZGVidWcoTE9HX1BSRUZJWCwgJ0ZhbGxpbmcgYmFjayB0byBtYW51YWwgcGFyc2luZycpO1xuICAgIGRldmljZXMgPSBhd2FpdCB0aGlzLmdldERldmljZXNCeVBhcnNpbmcocGxhdGZvcm0pO1xuICB9XG5cbiAgaWYgKCFmb3JTZGspIHtcbiAgICByZXR1cm4gZGV2aWNlcztcbiAgfVxuICAvLyBpZiBhIGBmb3JTZGtgIHdhcyBwYXNzZWQgaW4sIHJldHVybiBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIGxpc3RcbiAgaWYgKGRldmljZXNbZm9yU2RrXSkge1xuICAgIHJldHVybiBkZXZpY2VzW2ZvclNka107XG4gIH1cblxuICBsZXQgZXJyTXNnID0gYCcke2ZvclNka30nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IG9mIHNpbWN0bCBTREtzLmA7XG4gIGNvbnN0IGF2YWlsYWJsZVNES3MgPSBfLmtleXMoZGV2aWNlcyk7XG4gIGVyck1zZyArPSBhdmFpbGFibGVTREtzLmxlbmd0aFxuICAgID8gYCBPbmx5IHRoZSBmb2xsb3dpbmcgU2ltdWxhdG9yIFNESyB2ZXJzaW9ucyBhcmUgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtOiAke2F2YWlsYWJsZVNES3Muam9pbignLCAnKX1gXG4gICAgOiBgIE5vIFNpbXVsYXRvciBTREsgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbS4gUGxlYXNlIGluc3RhbGwgc29tZSB2aWEgWGNvZGUgcHJlZmVyZW5jZXMuYDtcbiAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbiB1c2luZyAtLWpzb24gZmxhZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbGF0Zm9ybVZlcnNpb24gLSBUaGUgcGxhdGZvcm0gdmVyc2lvbiBuYW1lLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJy5cbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29ycmVzcG9uZGluZyBydW50aW1lIG5hbWUgZm9yIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgICBwbGF0Zm9ybSB2ZXJzaW9uLlxuICovXG5jb21tYW5kcy5nZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uVmlhSnNvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb25WaWFKc29uIChcbiAgcGxhdGZvcm1WZXJzaW9uLCBwbGF0Zm9ybSA9ICdpT1MnKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsncnVudGltZXMnLCAnLS1qc29uJ10sXG4gIH0pO1xuICBmb3IgKGNvbnN0IHt2ZXJzaW9uLCBpZGVudGlmaWVyLCBuYW1lfSBvZiBKU09OLnBhcnNlKHN0ZG91dCkucnVudGltZXMpIHtcbiAgICBpZiAobm9ybWFsaXplVmVyc2lvbih2ZXJzaW9uKSA9PT0gbm9ybWFsaXplVmVyc2lvbihwbGF0Zm9ybVZlcnNpb24pXG4gICAgICAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChwbGF0Zm9ybS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHVzZSAtLWpzb24gZmxhZyB0byBwYXJzZSBwbGF0Zm9ybSB2ZXJzaW9uYCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxhdGZvcm1WZXJzaW9uIC0gVGhlIHBsYXRmb3JtIHZlcnNpb24gbmFtZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSAnMTAuMycuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIG5hbWUsIGZvciBleGFtcGxlICd3YXRjaE9TJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvcnJlc3BvbmRpbmcgcnVudGltZSBuYW1lIGZvciB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gdmVyc2lvbi5cbiAqL1xuY29tbWFuZHMuZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24gKFxuICBwbGF0Zm9ybVZlcnNpb24sIHBsYXRmb3JtID0gJ2lPUycpIHtcbiAgLy8gVHJ5IHdpdGggcGFyc2luZ1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgICAgYXJnczogWydydW50aW1lcyddLFxuICAgIH0pO1xuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvVXlralFaLzFcbiAgICBjb25zdCBydW50aW1lUmUgPVxuICAgICAgbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9XFxcXHMrKFxcXFxkK1xcXFwuXFxcXGQrKVxcXFxzK1xcXFwoKFxcXFxkK1xcXFwuXFxcXGQrXFxcXC4qXFxcXGQqKWAsICdpJyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcnVudGltZVJlLmV4ZWMobGluZSk7XG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gPT09IHBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gbWF0Y2hbMl07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgLy8gaWYgbm90aGluZyB3YXMgZm91bmQsIHBhc3MgcGxhdGZvcm0gdmVyc2lvbiBiYWNrXG4gIHJldHVybiBwbGF0Zm9ybVZlcnNpb247XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBkZXZpY2UgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IFhjb2RlIGluc3RhbGxhdGlvblxuICpcbiAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59IExpc3Qgb2YgdGhlIHR5cGVzIG9mIGRldmljZXMgYXZhaWxhYmxlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIGNvbW1hbmQgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VUeXBlcyAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnZGV2aWNldHlwZXMnLCAnLWonXSxcbiAgfSk7XG4gIC8qXG4gICAqIEpTT04gd2lsbCBiZSBsaWtlOlxuICAgKiAgIHtcbiAgICogICAgIFwiZGV2aWNldHlwZXNcIiA6IFtcbiAgICogICAgICAge1xuICAgKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNHNcIixcbiAgICogICAgICAgICBcImlkZW50aWZpZXJcIiA6IFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltRGV2aWNlVHlwZS5pUGhvbmUtNHNcIlxuICAgKiAgICAgICB9LFxuICAgKiAgICAgICAuLi5cbiAgICogICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZVR5cGVzID0gSlNPTi5wYXJzZShzdGRvdXQudHJpbSgpKTtcbiAgICByZXR1cm4gZGV2aWNlVHlwZXMuZGV2aWNldHlwZXMubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgbGlzdCBvZiBkZXZpY2UgdHlwZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcnVudGltZXMsIGRldmljZXR5cGVzLCBkZXZpY2VzIGFuZCBwYWlycyBhcyBPYmplY3RcbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IE9iamVjdCBjb250YWluaW5nIGRldmljZSB0eXBlcywgcnVudGltZXMgZGV2aWNlcyBhbmQgcGFpcnMuXG4gKiBUaGUgcmVzdWx0aW5nIEpTT04gd2lsbCBiZSBsaWtlOlxuICogICB7XG4gKiAgICAgXCJkZXZpY2V0eXBlc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcIm5hbWVcIiA6IFwiaVBob25lIDRzXCIsXG4gKiAgICAgICAgIFwiaWRlbnRpZmllclwiIDogXCJjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2VUeXBlLmlQaG9uZS00c1wiXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIF0sXG4gKiAgICAgXCJydW50aW1lc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcInZlcnNpb25cIiA6ICcxMy4wJyxcbiAqICAgICAgICAgXCJidW5kbGVQYXRoXCIgOiAnL0FwcGxpY2F0aW9ucy9YY29kZTExYmV0YTQuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZScsXG4gKiAgICAgICAgIFwiaXNBdmFpbGFibGVcIiA6IHRydWUsXG4gKiAgICAgICAgIFwibmFtZVwiIDogJ2lPUyAxMy4wJyxcbiAqICAgICAgICAgXCJpZGVudGlmaWVyXCIgOiAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCcsXG4gKiAgICAgICAgIFwiYnVpbGR2ZXJzaW9uXCIgOiAnMTdBNTUzNGQnXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIH0sXG4gKiAgICAgXCJkZXZpY2VzXCIgOlxuICogICAgICAge1xuICogICAgICAgICAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCc6IFsgW09iamVjdF0sIFtPYmplY3RdIF0gfSxcbiAqICAgICAgICAgLi4uXG4gKiAgICAgICB9LFxuICogICAgIFwicGFpcnNcIiA6IHt9IH1cbiAqXG4gKiAgIH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgY29tbWFuZCBmYWlsc1xuICovXG5jb21tYW5kcy5saXN0ID0gYXN5bmMgZnVuY3Rpb24gbGlzdCAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnLWonXSxcbiAgfSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0LnRyaW0oKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBzaW1jdGwgbGlzdDogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUMsdUJBQUEsQ0FBQUgsT0FBQTtBQUE0QyxTQUFBSSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBRix3QkFBQU0sR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtB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
|
|
157
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfaGVscGVycyIsIl9sb2dnZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJjb21tYW5kcyIsImdldERldmljZXNCeVBhcnNpbmciLCJwbGF0Zm9ybSIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwiZGV2aWNlU2VjdGlvblJlIiwiXyIsImlzRW1wdHkiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaGVzIiwibWF0Y2giLCJwdXNoIiwiRXJyb3IiLCJsaW5lUmUiLCJkZXZpY2VzIiwic2RrIiwibGluZSIsInNwbGl0Iiwic2xpY2UiLCJpbmNsdWRlcyIsImxpbmVNYXRjaCIsIm5hbWUiLCJ1ZGlkIiwic3RhdGUiLCJnZXREZXZpY2VzIiwiZm9yU2RrIiwidmVyc2lvbk1hdGNoUmUiLCJzZGtOYW1lIiwiZW50cmllcyIsInRvUGFpcnMiLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwiU0lNX1JVTlRJTUVfTkFNRSIsInZlcnNpb25NYXRjaCIsImZpbHRlciIsImVsIiwiaXNVbmRlZmluZWQiLCJpc0F2YWlsYWJsZSIsIm1hcCIsImF2YWlsYWJpbGl0eSIsImVyciIsImxvZyIsImRlYnVnIiwiTE9HX1BSRUZJWCIsInN0YWNrIiwiZXJyTXNnIiwiYXZhaWxhYmxlU0RLcyIsImtleXMiLCJsZW5ndGgiLCJqb2luIiwiZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24iLCJwbGF0Zm9ybVZlcnNpb24iLCJ2ZXJzaW9uIiwiaWRlbnRpZmllciIsInJ1bnRpbWVzIiwibm9ybWFsaXplVmVyc2lvbiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24iLCJydW50aW1lUmUiLCJpZ24iLCJnZXREZXZpY2VUeXBlcyIsImRldmljZVR5cGVzIiwidHJpbSIsImRldmljZXR5cGVzIiwidHlwZSIsIm1lc3NhZ2UiLCJsaXN0IiwiZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTSU1fUlVOVElNRV9OQU1FLCBub3JtYWxpemVWZXJzaW9uIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgbG9nLCB7IExPR19QUkVGSVggfSBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgZGV2aWNlIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdWRpZCAtIFRoZSBkZXZpY2UgVURJRC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBjdXJyZW50IFNpbXVsYXRvciBzdGF0ZSwgZm9yIGV4YW1wbGUgJ2Jvb3RlZCcgb3IgJ3NodXRkb3duJy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZGsgLSBUaGUgU0RLIHZlcnNpb24sIGZvciBleGFtcGxlICcxMC4zJy5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIFNpbXVsYXRvciBkZXZpY2VzIHRvIHJlcHJlc2VudFxuICogaXQgYXMgY29udmVuaWVudCBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIG1hcHBpbmcuIEVhY2gga2V5IGlzIHBsYXRmb3JtIHZlcnNpb24sXG4gKiAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgYW5cbiAqICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgdGhlIG1hdGNoaW5nIHtAbGluayBEZXZpY2VJbmZvfSBpbnN0YW5jZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXNCeVBhcnNpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzQnlQYXJzaW5nIChwbGF0Zm9ybSkge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ2RldmljZXMnXSxcbiAgfSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGNvbnN0IGRldmljZVNlY3Rpb25SZSA9IF8uaXNFbXB0eShwbGF0Zm9ybSlcbiAgICA/IG5ldyBSZWdFeHAoYFxcXFwtXFxcXC1cXFxccysoXFxcXFMrKVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKVxuICAgIDogbmV3IFJlZ0V4cChgXFxcXC1cXFxcLVxcXFxzKyR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKTtcbiAgY29uc3QgbWF0Y2hlcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKChtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCkpKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG1hdGNoZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgbGluZVJlID0gLyhbXlxcc10uKykgXFwoKFxcdystLitcXHcrKVxcKSBcXCgoXFx3K1xccz9cXHcrKVxcKS87IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvbEc3bUs2LzNcbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgY29uc3QgZGV2aWNlcyA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBjb25zdCBzZGsgPSBwbGF0Zm9ybSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMF0uc3BsaXQoJ1xcbicpLnNsaWNlKDEpKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnKHVuYXZhaWxhYmxlLCAnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBjb25zdCBsaW5lTWF0Y2ggPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbGluZU1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGxpbmU6ICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICAgIHNkayxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IG1hdGNoWzFdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXZpY2VzO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbGlzdCBvZiBleGlzdGluZyBTaW11bGF0b3IgZGV2aWNlcyB0byByZXByZXNlbnRcbiAqIGl0IGFzIGNvbnZlbmllbnQgbWFwcGluZyBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZz99IGZvclNkayAtIFRoZSBzZGsgdmVyc2lvbixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBkZXZpY2VzIGxpc3Qgc2hvdWxkIGJlIHBhcnNlZCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHtzdHJpbmc/fSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtQcm9taXNlPE9iamVjdHxEZXZpY2VJbmZvW10+fSBJZiBfZm9yU2RrXyBpcyBzZXQgdGhlbiB0aGUgbGlzdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBkZXZpY2VzIGZvciB0aGUgcGFydGljdWxhciBwbGF0Zm9ybSB2ZXJzaW9uLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcndpc2UgdGhlIHNhbWUgcmVzdWx0IGFzIGZvciB7QGxpbmsgZ2V0RGV2aWNlc0J5UGFyc2luZ31cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24uXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUgb3IgaWYgbm8gbWF0Y2hpbmdcbiAqICAgICAgICAgICAgICAgICBwbGF0Zm9ybSB2ZXJzaW9uIGlzIGZvdW5kIGluIHRoZSBzeXN0ZW0uXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXMgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzIChmb3JTZGssIHBsYXRmb3JtKSB7XG4gIGxldCBkZXZpY2VzID0ge307XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ2xpc3QnLCB7XG4gICAgICBhcmdzOiBbJ2RldmljZXMnLCAnLWonXSxcbiAgICB9KTtcbiAgICAvKiBKU09OIHNob3VsZCBiZVxuICAgICAqIHtcbiAgICAgKiAgIFwiZGV2aWNlc1wiIDoge1xuICAgICAqICAgICBcImlPUyA8c2RrPlwiIDogWyAvLyBvclxuICAgICAqICAgICBcImNvbS5hcHBsZS5Db3JlU2ltdWxhdG9yLlNpbVJ1bnRpbWUuaU9TLTxzZGs+IDogW1xuICAgICAqICAgICAgIHtcbiAgICAgKiAgICAgICAgIFwic3RhdGVcIiA6IFwiQm9vdGVkXCIsXG4gICAgICogICAgICAgICBcImF2YWlsYWJpbGl0eVwiIDogXCIoYXZhaWxhYmxlKVwiLFxuICAgICAqICAgICAgICAgXCJpc0F2YWlsYWJsZVwiIDogdHJ1ZSxcbiAgICAgKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNlwiLFxuICAgICAqICAgICAgICAgXCJ1ZGlkXCIgOiBcIjc1RTM0MTQwLTE4RTgtNEQxQS05RjQ1LUFBQzczNURGNzVERlwiXG4gICAgICogICAgICAgfVxuICAgICAqICAgICBdXG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqL1xuICAgIGNvbnN0IHZlcnNpb25NYXRjaFJlID0gXy5pc0VtcHR5KHBsYXRmb3JtKVxuICAgICAgPyBuZXcgUmVnRXhwKGBeKFteXFxcXHMtXSspW1xcXFxzLV0oXFxcXFMrKWAsICdpJylcbiAgICAgIDogbmV3IFJlZ0V4cChgXiR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVtcXFxccy1dKFxcXFxTKylgLCAnaScpO1xuICAgIGZvciAobGV0IFtzZGtOYW1lLCBlbnRyaWVzXSBvZiBfLnRvUGFpcnMoSlNPTi5wYXJzZShzdGRvdXQpLmRldmljZXMpKSB7XG4gICAgICAvLyB0aGVyZSBjb3VsZCBiZSBhIGxvbmdlciBuYW1lLCBzbyByZW1vdmUgaXRcbiAgICAgIHNka05hbWUgPSBzZGtOYW1lLnJlcGxhY2UoU0lNX1JVTlRJTUVfTkFNRSwgJycpO1xuICAgICAgY29uc3QgdmVyc2lvbk1hdGNoID0gdmVyc2lvbk1hdGNoUmUuZXhlYyhzZGtOYW1lKTtcbiAgICAgIGlmICghdmVyc2lvbk1hdGNoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGUgc2RrIGNhbiBoYXZlIGRhc2hlcyAoYDEyLTJgKSBvciBkb3RzIChgMTIuMWApXG4gICAgICBjb25zdCBzZGsgPSAocGxhdGZvcm0gPyB2ZXJzaW9uTWF0Y2hbMV0gOiB2ZXJzaW9uTWF0Y2hbMl0pLnJlcGxhY2UoJy0nLCAnLicpO1xuICAgICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgICAgZGV2aWNlc1tzZGtdLnB1c2goLi4uZW50cmllcy5maWx0ZXIoKGVsKSA9PiBfLmlzVW5kZWZpbmVkKGVsLmlzQXZhaWxhYmxlKSB8fCBlbC5pc0F2YWlsYWJsZSlcbiAgICAgICAgLm1hcCgoZWwpID0+IHtcbiAgICAgICAgICBkZWxldGUgZWwuYXZhaWxhYmlsaXR5O1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZGssXG4gICAgICAgICAgICAuLi5lbCxcbiAgICAgICAgICAgIHBsYXRmb3JtOiBwbGF0Zm9ybSB8fCB2ZXJzaW9uTWF0Y2hbMV0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZGVidWcoTE9HX1BSRUZJWCwgYFVuYWJsZSB0byBnZXQgSlNPTiBkZXZpY2UgbGlzdDogJHtlcnIuc3RhY2t9YCk7XG4gICAgbG9nLmRlYnVnKExPR19QUkVGSVgsICdGYWxsaW5nIGJhY2sgdG8gbWFudWFsIHBhcnNpbmcnKTtcbiAgICBkZXZpY2VzID0gYXdhaXQgdGhpcy5nZXREZXZpY2VzQnlQYXJzaW5nKHBsYXRmb3JtKTtcbiAgfVxuXG4gIGlmICghZm9yU2RrKSB7XG4gICAgcmV0dXJuIGRldmljZXM7XG4gIH1cbiAgLy8gaWYgYSBgZm9yU2RrYCB3YXMgcGFzc2VkIGluLCByZXR1cm4gb25seSB0aGUgY29ycmVzcG9uZGluZyBsaXN0XG4gIGlmIChkZXZpY2VzW2ZvclNka10pIHtcbiAgICByZXR1cm4gZGV2aWNlc1tmb3JTZGtdO1xuICB9XG5cbiAgbGV0IGVyck1zZyA9IGAnJHtmb3JTZGt9JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbGlzdCBvZiBzaW1jdGwgU0RLcy5gO1xuICBjb25zdCBhdmFpbGFibGVTREtzID0gXy5rZXlzKGRldmljZXMpO1xuICBlcnJNc2cgKz0gYXZhaWxhYmxlU0RLcy5sZW5ndGhcbiAgICA/IGAgT25seSB0aGUgZm9sbG93aW5nIFNpbXVsYXRvciBTREsgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbTogJHthdmFpbGFibGVTREtzLmpvaW4oJywgJyl9YFxuICAgIDogYCBObyBTaW11bGF0b3IgU0RLIHZlcnNpb25zIGFyZSBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0uIFBsZWFzZSBpbnN0YWxsIHNvbWUgdmlhIFhjb2RlIHByZWZlcmVuY2VzLmA7XG4gIHRocm93IG5ldyBFcnJvcihlcnJNc2cpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHJ1bnRpbWUgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24gdXNpbmcgLS1qc29uIGZsYWdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxhdGZvcm1WZXJzaW9uIC0gVGhlIHBsYXRmb3JtIHZlcnNpb24gbmFtZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSAnMTAuMycuXG4gKiBAcGFyYW0ge3N0cmluZz99IHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIG5hbWUsIGZvciBleGFtcGxlICd3YXRjaE9TJy5cbiAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gVGhlIGNvcnJlc3BvbmRpbmcgcnVudGltZSBuYW1lIGZvciB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gdmVyc2lvbi5cbiAqL1xuY29tbWFuZHMuZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24gPSBhc3luYyBmdW5jdGlvbiBnZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uVmlhSnNvbiAoXG4gIHBsYXRmb3JtVmVyc2lvbiwgcGxhdGZvcm0gPSAnaU9TJykge1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ3J1bnRpbWVzJywgJy0tanNvbiddLFxuICB9KTtcbiAgZm9yIChjb25zdCB7dmVyc2lvbiwgaWRlbnRpZmllciwgbmFtZX0gb2YgSlNPTi5wYXJzZShzdGRvdXQpLnJ1bnRpbWVzKSB7XG4gICAgaWYgKG5vcm1hbGl6ZVZlcnNpb24odmVyc2lvbikgPT09IG5vcm1hbGl6ZVZlcnNpb24ocGxhdGZvcm1WZXJzaW9uKVxuICAgICAgJiYgbmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocGxhdGZvcm0udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgIHJldHVybiBpZGVudGlmaWVyO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCB1c2UgLS1qc29uIGZsYWcgdG8gcGFyc2UgcGxhdGZvcm0gdmVyc2lvbmApO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHJ1bnRpbWUgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBsYXRmb3JtVmVyc2lvbiAtIFRoZSBwbGF0Zm9ybSB2ZXJzaW9uIG5hbWUsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHtzdHJpbmc/fSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFRoZSBjb3JyZXNwb25kaW5nIHJ1bnRpbWUgbmFtZSBmb3IgdGhlIGdpdmVuXG4gKiAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHZlcnNpb24uXG4gKi9cbmNvbW1hbmRzLmdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24gPSBhc3luYyBmdW5jdGlvbiBnZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uIChcbiAgcGxhdGZvcm1WZXJzaW9uLCBwbGF0Zm9ybSA9ICdpT1MnKSB7XG4gIC8vIFRyeSB3aXRoIHBhcnNpbmdcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICAgIGFyZ3M6IFsncnVudGltZXMnXSxcbiAgICB9KTtcbiAgICAvLyBodHRwczovL3JlZ2V4MTAxLmNvbS9yL1V5a2pRWi8xXG4gICAgY29uc3QgcnVudGltZVJlID1cbiAgICAgIG5ldyBSZWdFeHAoYCR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcZCtcXFxcLlxcXFxkKylcXFxccytcXFxcKChcXFxcZCtcXFxcLlxcXFxkK1xcXFwuKlxcXFxkKilgLCAnaScpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBzdGRvdXQuc3BsaXQoJ1xcbicpKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHJ1bnRpbWVSZS5leGVjKGxpbmUpO1xuICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdID09PSBwbGF0Zm9ybVZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoWzJdO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7fVxuXG4gIC8vIGlmIG5vdGhpbmcgd2FzIGZvdW5kLCBwYXNzIHBsYXRmb3JtIHZlcnNpb24gYmFja1xuICByZXR1cm4gcGxhdGZvcm1WZXJzaW9uO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGxpc3Qgb2YgZGV2aWNlIHR5cGVzIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBYY29kZSBpbnN0YWxsYXRpb25cbiAqXG4gKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZ1tdPn0gTGlzdCBvZiB0aGUgdHlwZXMgb2YgZGV2aWNlcyBhdmFpbGFibGVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgY29tbWFuZCBmYWlsc1xuICovXG5jb21tYW5kcy5nZXREZXZpY2VUeXBlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZVR5cGVzICgpIHtcbiAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ2xpc3QnLCB7XG4gICAgYXJnczogWydkZXZpY2V0eXBlcycsICctaiddLFxuICB9KTtcbiAgLypcbiAgICogSlNPTiB3aWxsIGJlIGxpa2U6XG4gICAqICAge1xuICAgKiAgICAgXCJkZXZpY2V0eXBlc1wiIDogW1xuICAgKiAgICAgICB7XG4gICAqICAgICAgICAgXCJuYW1lXCIgOiBcImlQaG9uZSA0c1wiLFxuICAgKiAgICAgICAgIFwiaWRlbnRpZmllclwiIDogXCJjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2VUeXBlLmlQaG9uZS00c1wiXG4gICAqICAgICAgIH0sXG4gICAqICAgICAgIC4uLlxuICAgKiAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgY29uc3QgZGV2aWNlVHlwZXMgPSBKU09OLnBhcnNlKHN0ZG91dC50cmltKCkpO1xuICAgIHJldHVybiBkZXZpY2VUeXBlcy5kZXZpY2V0eXBlcy5tYXAoKHR5cGUpID0+IHR5cGUubmFtZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGdldCBsaXN0IG9mIGRldmljZSB0eXBlczogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBHZXQgdGhlIGZ1bGwgbGlzdCBvZiBydW50aW1lcywgZGV2aWNldHlwZXMsIGRldmljZXMgYW5kIHBhaXJzIGFzIE9iamVjdFxuICpcbiAqIEByZXR1cm4ge1Byb21pc2U8T2JqZWN0Pn0gT2JqZWN0IGNvbnRhaW5pbmcgZGV2aWNlIHR5cGVzLCBydW50aW1lcyBkZXZpY2VzIGFuZCBwYWlycy5cbiAqIFRoZSByZXN1bHRpbmcgSlNPTiB3aWxsIGJlIGxpa2U6XG4gKiAgIHtcbiAqICAgICBcImRldmljZXR5cGVzXCIgOiBbXG4gKiAgICAgICB7XG4gKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNHNcIixcbiAqICAgICAgICAgXCJpZGVudGlmaWVyXCIgOiBcImNvbS5hcHBsZS5Db3JlU2ltdWxhdG9yLlNpbURldmljZVR5cGUuaVBob25lLTRzXCJcbiAqICAgICAgIH0sXG4gKiAgICAgICAuLi5cbiAqICAgICAgXSxcbiAqICAgICBcInJ1bnRpbWVzXCIgOiBbXG4gKiAgICAgICB7XG4gKiAgICAgICAgIFwidmVyc2lvblwiIDogJzEzLjAnLFxuICogICAgICAgICBcImJ1bmRsZVBhdGhcIiA6ICcvQXBwbGljYXRpb25zL1hjb2RlMTFiZXRhNC5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lJyxcbiAqICAgICAgICAgXCJpc0F2YWlsYWJsZVwiIDogdHJ1ZSxcbiAqICAgICAgICAgXCJuYW1lXCIgOiAnaU9TIDEzLjAnLFxuICogICAgICAgICBcImlkZW50aWZpZXJcIiA6ICdjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1SdW50aW1lLmlPUy0xMy0wJyxcbiAqICAgICAgICAgXCJidWlsZHZlcnNpb25cIiA6ICcxN0E1NTM0ZCdcbiAqICAgICAgIH0sXG4gKiAgICAgICAuLi5cbiAqICAgICAgfSxcbiAqICAgICBcImRldmljZXNcIiA6XG4gKiAgICAgICB7XG4gKiAgICAgICAgICdjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1SdW50aW1lLmlPUy0xMy0wJzogWyBbT2JqZWN0XSwgW09iamVjdF0gXSB9LFxuICogICAgICAgICAuLi5cbiAqICAgICAgIH0sXG4gKiAgICAgXCJwYWlyc1wiIDoge30gfVxuICpcbiAqICAgfVxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBjb21tYW5kIGZhaWxzXG4gKi9cbmNvbW1hbmRzLmxpc3QgPSBhc3luYyBmdW5jdGlvbiBsaXN0ICgpIHtcbiAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ2xpc3QnLCB7XG4gICAgYXJnczogWyctaiddLFxuICB9KTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzdGRvdXQudHJpbSgpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIHNpbWN0bCBsaXN0OiAke2UubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBQTRDLFNBQUFJLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFGLHdCQUFBTSxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9BQUEsRUFBQUYsR0FBQSxVQUFBRyxL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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","names":["_lodash","_interopRequireDefault","require","_helpers","_logger","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","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","_default","exports"],"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":["_lodash","_interopRequireDefault","require","_helpers","_logger","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","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","_default","exports"],"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 {Promise<Object|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 {Promise<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 {Promise<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 {Promise<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 {Promise<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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"}
|
|
@@ -13,4 +13,4 @@ commands.openUrl = async function openUrl(url) {
|
|
|
13
13
|
};
|
|
14
14
|
var _default = commands;
|
|
15
15
|
exports.default = _default;
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsIm9wZW5VcmwiLCJ1cmwiLCJleGVjIiwiYXJncyIsInJlcXVpcmVVZGlkIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9vcGVudXJsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogT3BlbiBVUkwgc2NoZW1lIG9uIFNpbXVsYXRvci4gaU9TIHdpbGwgYXV0b21hdGljYWxseSB0cnlcbiAqIHRvIGZpbmQgYSBtYXRjaGluZyBhcHBsaWNhdGlvbiwgd2hpY2ggc3VwcG9ydHMgdGhlIGdpdmVuIHNjaGVtZS5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgVVJMIHNjaGVtZSB0byBvcGVuLCBmb3IgZXhhbXBsZSBodHRwOi8vYXBwaW9tLmlvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBvcGVuZWQgYnkgdGhlIGJ1aWx0LWluIG1vYmlsZSBicm93c2VyLlxuICogQHJldHVybiB7UHJvbWlzZTxFeGVjUmVzdWx0Pn0gQ29tbWFuZCBleGVjdXRpb24gcmVzdWx0LlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMub3BlblVybCA9IGFzeW5jIGZ1bmN0aW9uIG9wZW5VcmwgKHVybCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5leGVjKCdvcGVudXJsJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdvcGVudXJsJyksIHVybF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBY25CQSxRQUFRLENBQUNDLE9BQU8sR0FBRyxlQUFlQSxPQUFPQSxDQUFFQyxHQUFHLEVBQUU7RUFDOUMsT0FBTyxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFNBQVMsRUFBRTtJQUNoQ0MsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUVILEdBQUc7RUFDekMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLElBQUFJLFFBQUEsR0FFYU4sUUFBUTtBQUFBTyxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openurl.js","names":["commands","openUrl","url","exec","args","requireUdid","_default","exports","default"],"sources":["../../../lib/subcommands/openurl.js"],"sourcesContent":["const commands = {};\n\n/**\n * Open URL scheme on Simulator. iOS will automatically try\n * to find a matching application, which supports the given scheme.\n * It is required that Simulator is in _booted_ state.\n *\n * @param {string} url - The URL scheme to open, for example http://appiom.io\n * will be opened by the built-in mobile browser.\n * @return {ExecResult} Command execution result.\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.openUrl = async function openUrl (url) {\n return await this.exec('openurl', {\n args: [this.requireUdid('openurl'), url],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAcnBA,QAAQ,CAACC,OAAO,GAAG,eAAeA,OAAOA,CAAEC,GAAG,EAAE;EAC9C,OAAO,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IAChCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,SAAS,CAAC,EAAEH,GAAG;EACzC,CAAC,CAAC;AACJ,CAAC;AAAC,IAAAI,QAAA,GAEaN,QAAQ;AAAAO,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
1
|
+
{"version":3,"file":"openurl.js","names":["commands","openUrl","url","exec","args","requireUdid","_default","exports","default"],"sources":["../../../lib/subcommands/openurl.js"],"sourcesContent":["const commands = {};\n\n/**\n * Open URL scheme on Simulator. iOS will automatically try\n * to find a matching application, which supports the given scheme.\n * It is required that Simulator is in _booted_ state.\n *\n * @param {string} url - The URL scheme to open, for example http://appiom.io\n * will be opened by the built-in mobile browser.\n * @return {Promise<ExecResult>} Command execution result.\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.openUrl = async function openUrl (url) {\n return await this.exec('openurl', {\n args: [this.requireUdid('openurl'), url],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAcnBA,QAAQ,CAACC,OAAO,GAAG,eAAeA,OAAOA,CAAEC,GAAG,EAAE;EAC9C,OAAO,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IAChCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,SAAS,CAAC,EAAEH,GAAG;EACzC,CAAC,CAAC;AACJ,CAAC;AAAC,IAAAI,QAAA,GAEaN,QAAQ;AAAAO,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -21,4 +21,4 @@ commands.setPasteboard = async function setPasteboard(content, encoding = 'utf8'
|
|
|
21
21
|
};
|
|
22
22
|
var _default = commands;
|
|
23
23
|
exports.default = _default;
|
|
24
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInNldFBhc3RlYm9hcmQiLCJjb250ZW50IiwiZW5jb2RpbmciLCJwYkNvcHlTdWJwcm9jZXNzIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImFzeW5jaHJvbm91cyIsInN0YXJ0IiwiZXhpdENvZGVWZXJpZmllciIsImpvaW4iLCJzdGRpbiIsInByb2MiLCJzZXRFbmNvZGluZyIsIndyaXRlIiwiZW5kIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9wYmNvcHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBTZXQgdGhlIGNvbnRlbnQgb2YgU2ltdWxhdG9yIHBhc3RlYm9hcmQuXG4gKiBJdCBpcyByZXF1aXJlZCB0aGF0IFNpbXVsYXRvciBpcyBpbiBfYm9vdGVkXyBzdGF0ZS5cbiAqXG4gKiBAc2luY2UgWGNvZGUgU0RLIDguMVxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgLSBUaGUgYWN0dWFsIHN0cmluZyBjb250ZW50IHRvIGJlIHNldC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBlbmNvZGluZyBbdXRmOF0gLSBUaGUgZW5jb2Rpbmcgb2YgdGhlIGdpdmVuIHBhc3RlYm9hcmQgY29udGVudC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYtOCBieSBkZWZhdWx0LlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuc2V0UGFzdGVib2FyZCA9IGFzeW5jIGZ1bmN0aW9uIHNldFBhc3RlYm9hcmQgKGNvbnRlbnQsIGVuY29kaW5nID0gJ3V0ZjgnKSB7XG4gIGNvbnN0IHBiQ29weVN1YnByb2Nlc3MgPSBhd2FpdCB0aGlzLmV4ZWMoJ3BiY29weScsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgncGJjb3B5JyldLFxuICAgIGFzeW5jaHJvbm91czogdHJ1ZSxcbiAgfSk7XG4gIGF3YWl0IHBiQ29weVN1YnByb2Nlc3Muc3RhcnQoMCk7XG4gIGNvbnN0IGV4aXRDb2RlVmVyaWZpZXIgPSBwYkNvcHlTdWJwcm9jZXNzLmpvaW4oKTtcbiAgY29uc3Qgc3RkaW4gPSBwYkNvcHlTdWJwcm9jZXNzLnByb2Muc3RkaW47XG4gIHN0ZGluLnNldEVuY29kaW5nKGVuY29kaW5nKTtcbiAgc3RkaW4ud3JpdGUoY29udGVudCk7XG4gIHN0ZGluLmVuZCgpO1xuICBhd2FpdCBleGl0Q29kZVZlcmlmaWVyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBY25CQSxRQUFRLENBQUNDLGFBQWEsR0FBRyxlQUFlQSxhQUFhQSxDQUFFQyxPQUFPLEVBQUVDLFFBQVEsR0FBRyxNQUFNLEVBQUU7RUFDakYsTUFBTUMsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxRQUFRLEVBQUU7SUFDakRDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDQyxZQUFZLEVBQUU7RUFDaEIsQ0FBQyxDQUFDO0VBQ0YsTUFBTUosZ0JBQWdCLENBQUNLLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDL0IsTUFBTUMsZ0JBQWdCLEdBQUdOLGdCQUFnQixDQUFDTyxJQUFJLENBQUMsQ0FBQztFQUNoRCxNQUFNQyxLQUFLLEdBQUdSLGdCQUFnQixDQUFDUyxJQUFJLENBQUNELEtBQUs7RUFDekNBLEtBQUssQ0FBQ0UsV0FBVyxDQUFDWCxRQUFRLENBQUM7RUFDM0JTLEtBQUssQ0FBQ0csS0FBSyxDQUFDYixPQUFPLENBQUM7RUFDcEJVLEtBQUssQ0FBQ0ksR0FBRyxDQUFDLENBQUM7RUFDWCxNQUFNTixnQkFBZ0I7QUFDeEIsQ0FBQztBQUFDLElBQUFPLFFBQUEsR0FFYWpCLFFBQVE7QUFBQWtCLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pbcopy.js","names":["commands","setPasteboard","content","encoding","pbCopySubprocess","exec","args","requireUdid","asynchronous","start","exitCodeVerifier","join","stdin","proc","setEncoding","write","end","_default","exports","default"],"sources":["../../../lib/subcommands/pbcopy.js"],"sourcesContent":["const commands = {};\n\n/**\n * Set the content of Simulator pasteboard.\n * It is required that Simulator is in _booted_ state.\n *\n * @since Xcode SDK 8.1\n * @param {string} content - The actual string content to be set.\n * @param {string} encoding [
|
|
1
|
+
{"version":3,"file":"pbcopy.js","names":["commands","setPasteboard","content","encoding","pbCopySubprocess","exec","args","requireUdid","asynchronous","start","exitCodeVerifier","join","stdin","proc","setEncoding","write","end","_default","exports","default"],"sources":["../../../lib/subcommands/pbcopy.js"],"sourcesContent":["const commands = {};\n\n/**\n * Set the content of Simulator pasteboard.\n * It is required that Simulator is in _booted_ state.\n *\n * @since Xcode SDK 8.1\n * @param {string} content - The actual string content to be set.\n * @param {string} encoding [utf8] - The encoding of the given pasteboard content.\n * UTF-8 by default.\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.setPasteboard = async function setPasteboard (content, encoding = 'utf8') {\n const pbCopySubprocess = await this.exec('pbcopy', {\n args: [this.requireUdid('pbcopy')],\n asynchronous: true,\n });\n await pbCopySubprocess.start(0);\n const exitCodeVerifier = pbCopySubprocess.join();\n const stdin = pbCopySubprocess.proc.stdin;\n stdin.setEncoding(encoding);\n stdin.write(content);\n stdin.end();\n await exitCodeVerifier;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAcnBA,QAAQ,CAACC,aAAa,GAAG,eAAeA,aAAaA,CAAEC,OAAO,EAAEC,QAAQ,GAAG,MAAM,EAAE;EACjF,MAAMC,gBAAgB,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE;IACjDC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAClCC,YAAY,EAAE;EAChB,CAAC,CAAC;EACF,MAAMJ,gBAAgB,CAACK,KAAK,CAAC,CAAC,CAAC;EAC/B,MAAMC,gBAAgB,GAAGN,gBAAgB,CAACO,IAAI,CAAC,CAAC;EAChD,MAAMC,KAAK,GAAGR,gBAAgB,CAACS,IAAI,CAACD,KAAK;EACzCA,KAAK,CAACE,WAAW,CAACX,QAAQ,CAAC;EAC3BS,KAAK,CAACG,KAAK,CAACb,OAAO,CAAC;EACpBU,KAAK,CAACI,GAAG,CAAC,CAAC;EACX,MAAMN,gBAAgB;AACxB,CAAC;AAAC,IAAAO,QAAA,GAEajB,QAAQ;AAAAkB,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -17,4 +17,4 @@ commands.getPasteboard = async function getPasteboard(encoding = 'utf8') {
|
|
|
17
17
|
};
|
|
18
18
|
var _default = commands;
|
|
19
19
|
exports.default = _default;
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldFBhc3RlYm9hcmQiLCJlbmNvZGluZyIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwicmVxdWlyZVVkaWQiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL3BicGFzdGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBHZXQgdGhlIGNvbnRlbnQgb2YgU2ltdWxhdG9yIHBhc3RlYm9hcmQuXG4gKiBJdCBpcyByZXF1aXJlZCB0aGF0IFNpbXVsYXRvciBpcyBpbiBfYm9vdGVkXyBzdGF0ZS5cbiAqXG4gKiBAc2luY2UgWGNvZGUgOC4xIFNES1xuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nIFsndXRmLTgnXSAtIFRoZSBlbmNvZGluZyBvZiB0aGUgcmV0dXJuZWQgcGFzdGVib2FyZCBjb250ZW50LlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURi04IGJ5IGRlZmF1bHQuXG4gKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IEN1cnJlbnQgY29udGVudCBvZiBTaW11bGF0b3IgcGFzdGVib2FyZCBvciBhbiBlbXB0eSBzdHJpbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5nZXRQYXN0ZWJvYXJkID0gYXN5bmMgZnVuY3Rpb24gZ2V0UGFzdGVib2FyZCAoZW5jb2RpbmcgPSAndXRmOCcpIHtcbiAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ3BicGFzdGUnLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ3BicGFzdGUnKV0sXG4gICAgZW5jb2RpbmcsXG4gIH0pO1xuICByZXR1cm4gc3Rkb3V0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBY25CQSxRQUFRLENBQUNDLGFBQWEsR0FBRyxlQUFlQSxhQUFhQSxDQUFFQyxRQUFRLEdBQUcsTUFBTSxFQUFFO0VBQ3hFLE1BQU07SUFBQ0M7RUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxTQUFTLEVBQUU7SUFDMUNDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DSjtFQUNGLENBQUMsQ0FBQztFQUNGLE9BQU9DLE1BQU07QUFDZixDQUFDO0FBQUMsSUFBQUksUUFBQSxHQUVhUCxRQUFRO0FBQUFRLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pbpaste.js","names":["commands","getPasteboard","encoding","stdout","exec","args","requireUdid","_default","exports","default"],"sources":["../../../lib/subcommands/pbpaste.js"],"sourcesContent":["const commands = {};\n\n/**\n * Get the content of Simulator pasteboard.\n * It is required that Simulator is in _booted_ state.\n *\n * @since Xcode 8.1 SDK\n * @param {string} encoding ['utf-8'] - The encoding of the returned pasteboard content.\n * UTF-8 by default.\n * @return {string} Current content of Simulator pasteboard or an empty string.\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.getPasteboard = async function getPasteboard (encoding = 'utf8') {\n const {stdout} = await this.exec('pbpaste', {\n args: [this.requireUdid('pbpaste')],\n encoding,\n });\n return stdout;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAcnBA,QAAQ,CAACC,aAAa,GAAG,eAAeA,aAAaA,CAAEC,QAAQ,GAAG,MAAM,EAAE;EACxE,MAAM;IAACC;EAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IAC1CC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,SAAS,CAAC,CAAC;IACnCJ;EACF,CAAC,CAAC;EACF,OAAOC,MAAM;AACf,CAAC;AAAC,IAAAI,QAAA,GAEaP,QAAQ;AAAAQ,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
1
|
+
{"version":3,"file":"pbpaste.js","names":["commands","getPasteboard","encoding","stdout","exec","args","requireUdid","_default","exports","default"],"sources":["../../../lib/subcommands/pbpaste.js"],"sourcesContent":["const commands = {};\n\n/**\n * Get the content of Simulator pasteboard.\n * It is required that Simulator is in _booted_ state.\n *\n * @since Xcode 8.1 SDK\n * @param {string} encoding ['utf-8'] - The encoding of the returned pasteboard content.\n * UTF-8 by default.\n * @return {Promise<string>} Current content of Simulator pasteboard or an empty string.\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.getPasteboard = async function getPasteboard (encoding = 'utf8') {\n const {stdout} = await this.exec('pbpaste', {\n args: [this.requireUdid('pbpaste')],\n encoding,\n });\n return stdout;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAcnBA,QAAQ,CAACC,aAAa,GAAG,eAAeA,aAAaA,CAAEC,QAAQ,GAAG,MAAM,EAAE;EACxE,MAAM;IAACC;EAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IAC1CC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,SAAS,CAAC,CAAC;IACnCJ;EACF,CAAC,CAAC;EACF,OAAOC,MAAM;AACf,CAAC;AAAC,IAAAI,QAAA,GAEaP,QAAQ;AAAAQ,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -29,4 +29,4 @@ commands.spawnSubProcess = async function spawnSubProcess(args, env = {}) {
|
|
|
29
29
|
};
|
|
30
30
|
var _default = commands;
|
|
31
31
|
exports.default = _default;
|
|
32
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJjb21tYW5kcyIsInNwYXduUHJvY2VzcyIsImFyZ3MiLCJlbnYiLCJfIiwiaXNFbXB0eSIsIkVycm9yIiwiZXhlYyIsInJlcXVpcmVVZGlkIiwiaXNBcnJheSIsInNwYXduU3ViUHJvY2VzcyIsImFzeW5jaHJvbm91cyIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvc3Bhd24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFNwYXduIHRoZSBwYXJ0aWN1bGFyIHByb2Nlc3Mgb24gU2ltdWxhdG9yLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IGFyZ3MgLSBTcGF3biBhcmd1bWVudHNcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbnYgW3t9XSAtIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG1hcHBpbmcuXG4gKiBAcmV0dXJuIHtQcm9taXNlPEV4ZWNSZXN1bHQ+fSBDb21tYW5kIGV4ZWN1dGlvbiByZXN1bHQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5zcGF3blByb2Nlc3MgPSBhc3luYyBmdW5jdGlvbiBzcGF3blByb2Nlc3MgKGFyZ3MsIGVudiA9IHt9KSB7XG4gIGlmIChfLmlzRW1wdHkoYXJncykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NwYXduIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCB0aGlzLmV4ZWMoJ3NwYXduJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdzcGF3bicpLCAuLi4oXy5pc0FycmF5KGFyZ3MpID8gYXJncyA6IFthcmdzXSldLFxuICAgIGVudixcbiAgfSk7XG59O1xuXG4vKipcbiAqIFByZXBhcmUgU3ViUHJvY2VzcyBpbnN0YW5jZSBmb3IgYSBuZXcgcHJvY2Vzcywgd2hpY2ggaXMgZ29pbmcgdG8gYmUgc3Bhd25lZFxuICogb24gU2ltdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBhcmdzIC0gU3Bhd24gYXJndW1lbnRzXG4gKiBAcGFyYW0ge29iamVjdH0gZW52IFt7fV0gLSBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyBtYXBwaW5nLlxuICogQHJldHVybiB7UHJvbWlzZTxTdWJQcm9jZXNzPn0gVGhlIGluc3RhbmNlIG9mIHRoZSBwcm9jZXNzIHRvIGJlIHNwYXduZWQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5zcGF3blN1YlByb2Nlc3MgPSBhc3luYyBmdW5jdGlvbiBzcGF3blN1YlByb2Nlc3MgKGFyZ3MsIGVudiA9IHt9KSB7XG4gIGlmIChfLmlzRW1wdHkoYXJncykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NwYXduIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCB0aGlzLmV4ZWMoJ3NwYXduJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdzcGF3bicpLCAuLi4oXy5pc0FycmF5KGFyZ3MpID8gYXJncyA6IFthcmdzXSldLFxuICAgIGVudixcbiAgICBhc3luY2hyb25vdXM6IHRydWUsXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsTUFBTUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQWFuQkEsUUFBUSxDQUFDQyxZQUFZLEdBQUcsZUFBZUEsWUFBWUEsQ0FBRUMsSUFBSSxFQUFFQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUU7RUFDbkUsSUFBSUMsZUFBQyxDQUFDQyxPQUFPLENBQUNILElBQUksQ0FBQyxFQUFFO0lBQ25CLE1BQU0sSUFBSUksS0FBSyxDQUFDLDhCQUE4QixDQUFDO0VBQ2pEO0VBRUEsT0FBTyxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtJQUM5QkwsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDTSxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSUosZUFBQyxDQUFDSyxPQUFPLENBQUNQLElBQUksQ0FBQyxHQUFHQSxJQUFJLEdBQUcsQ0FBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RUM7RUFDRixDQUFDLENBQUM7QUFDSixDQUFDO0FBV0RILFFBQVEsQ0FBQ1UsZUFBZSxHQUFHLGVBQWVBLGVBQWVBLENBQUVSLElBQUksRUFBRUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO0VBQ3pFLElBQUlDLGVBQUMsQ0FBQ0MsT0FBTyxDQUFDSCxJQUFJLENBQUMsRUFBRTtJQUNuQixNQUFNLElBQUlJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQztFQUNqRDtFQUVBLE9BQU8sTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxPQUFPLEVBQUU7SUFDOUJMLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ00sV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUlKLGVBQUMsQ0FBQ0ssT0FBTyxDQUFDUCxJQUFJLENBQUMsR0FBR0EsSUFBSSxHQUFHLENBQUNBLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkVDLEdBQUc7SUFDSFEsWUFBWSxFQUFFO0VBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFBQyxJQUFBQyxRQUFBLEdBRWFaLFFBQVE7QUFBQWEsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUEifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","names":["_lodash","_interopRequireDefault","require","commands","spawnProcess","args","env","_","isEmpty","Error","exec","requireUdid","isArray","spawnSubProcess","asynchronous","_default","exports","default"],"sources":["../../../lib/subcommands/spawn.js"],"sourcesContent":["import _ from 'lodash';\n\n\nconst commands = {};\n\n/**\n * Spawn the particular process on Simulator.\n * It is required that Simulator is in _booted_ state.\n *\n * @param {string|
|
|
1
|
+
{"version":3,"file":"spawn.js","names":["_lodash","_interopRequireDefault","require","commands","spawnProcess","args","env","_","isEmpty","Error","exec","requireUdid","isArray","spawnSubProcess","asynchronous","_default","exports","default"],"sources":["../../../lib/subcommands/spawn.js"],"sourcesContent":["import _ from 'lodash';\n\n\nconst commands = {};\n\n/**\n * Spawn the particular process on Simulator.\n * It is required that Simulator is in _booted_ state.\n *\n * @param {string|string[]} args - Spawn arguments\n * @param {object} env [{}] - Additional environment variables mapping.\n * @return {Promise<ExecResult>} Command execution result.\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.spawnProcess = async function spawnProcess (args, env = {}) {\n if (_.isEmpty(args)) {\n throw new Error('Spawn arguments are required');\n }\n\n return await this.exec('spawn', {\n args: [this.requireUdid('spawn'), ...(_.isArray(args) ? args : [args])],\n env,\n });\n};\n\n/**\n * Prepare SubProcess instance for a new process, which is going to be spawned\n * on Simulator.\n *\n * @param {string|string[]} args - Spawn arguments\n * @param {object} env [{}] - Additional environment variables mapping.\n * @return {Promise<SubProcess>} The instance of the process to be spawned.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.spawnSubProcess = async function spawnSubProcess (args, env = {}) {\n if (_.isEmpty(args)) {\n throw new Error('Spawn arguments are required');\n }\n\n return await this.exec('spawn', {\n args: [this.requireUdid('spawn'), ...(_.isArray(args) ? args : [args])],\n env,\n asynchronous: true,\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,MAAMC,QAAQ,GAAG,CAAC,CAAC;AAanBA,QAAQ,CAACC,YAAY,GAAG,eAAeA,YAAYA,CAAEC,IAAI,EAAEC,GAAG,GAAG,CAAC,CAAC,EAAE;EACnE,IAAIC,eAAC,CAACC,OAAO,CAACH,IAAI,CAAC,EAAE;IACnB,MAAM,IAAII,KAAK,CAAC,8BAA8B,CAAC;EACjD;EAEA,OAAO,MAAM,IAAI,CAACC,IAAI,CAAC,OAAO,EAAE;IAC9BL,IAAI,EAAE,CAAC,IAAI,CAACM,WAAW,CAAC,OAAO,CAAC,EAAE,IAAIJ,eAAC,CAACK,OAAO,CAACP,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC,CAAC,CAAC;IACvEC;EACF,CAAC,CAAC;AACJ,CAAC;AAWDH,QAAQ,CAACU,eAAe,GAAG,eAAeA,eAAeA,CAAER,IAAI,EAAEC,GAAG,GAAG,CAAC,CAAC,EAAE;EACzE,IAAIC,eAAC,CAACC,OAAO,CAACH,IAAI,CAAC,EAAE;IACnB,MAAM,IAAII,KAAK,CAAC,8BAA8B,CAAC;EACjD;EAEA,OAAO,MAAM,IAAI,CAACC,IAAI,CAAC,OAAO,EAAE;IAC9BL,IAAI,EAAE,CAAC,IAAI,CAACM,WAAW,CAAC,OAAO,CAAC,EAAE,IAAIJ,eAAC,CAACK,OAAO,CAACP,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC,CAAC,CAAC;IACvEC,GAAG;IACHQ,YAAY,EAAE;EAChB,CAAC,CAAC;AACJ,CAAC;AAAC,IAAAC,QAAA,GAEaZ,QAAQ;AAAAa,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -23,4 +23,4 @@ commands.setAppearance = async function setAppearance(appearance) {
|
|
|
23
23
|
};
|
|
24
24
|
var _default = commands;
|
|
25
25
|
exports.default = _default;
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJjb21tYW5kcyIsImdldEFwcGVhcmFuY2UiLCJzdGRvdXQiLCJleGVjIiwiYXJncyIsInJlcXVpcmVVZGlkIiwiXyIsInRyaW0iLCJzZXRBcHBlYXJhbmNlIiwiYXBwZWFyYW5jZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvdWkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBVSSBhcHBlYXJhbmNlIHZhbHVlIGZyb20gdGhlIGdpdmVuIHNpbXVsYXRvclxuICpcbiAqIEBzaW5jZSBYY29kZSAxMS40IFNES1xuICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSB0aGUgYXBwZWFyYW5jZSB2YWx1ZSwgZm9yIGV4YW1wbGUgJ2xpZ2h0JyBvciAnZGFyaydcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgY3VycmVudCBTREsgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb21tYW5kXG4gKiBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgZ2V0dGluZyB0aGUgdmFsdWVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLmdldEFwcGVhcmFuY2UgPSBhc3luYyBmdW5jdGlvbiBnZXRBcHBlYXJhbmNlICgpIHtcbiAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ3VpJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCd1aScpLCAnYXBwZWFyYW5jZSddLFxuICB9KTtcbiAgcmV0dXJuIF8udHJpbShzdGRvdXQpO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSBVSSBhcHBlYXJhbmNlIHRvIHRoZSBnaXZlbiBzdHlsZVxuICpcbiAqIEBzaW5jZSBYY29kZSAxMS40IFNES1xuICogQHBhcmFtIHtzdHJpbmd9IGFwcGVhcmFuY2UgdmFsaWQgYXBwZWFyYW5jZSB2YWx1ZSwgZm9yIGV4YW1wbGUgJ2xpZ2h0JyBvciAnZGFyaydcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgY3VycmVudCBTREsgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb21tYW5kXG4gKiBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgZ2V0dGluZyB0aGUgdmFsdWVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLnNldEFwcGVhcmFuY2UgPSBhc3luYyBmdW5jdGlvbiBzZXRBcHBlYXJhbmNlIChhcHBlYXJhbmNlKSB7XG4gIGF3YWl0IHRoaXMuZXhlYygndWknLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ3VpJyksICdhcHBlYXJhbmNlJywgYXBwZWFyYW5jZV0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsTUFBTUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQVduQkEsUUFBUSxDQUFDQyxhQUFhLEdBQUcsZUFBZUEsYUFBYUEsQ0FBQSxFQUFJO0VBQ3ZELE1BQU07SUFBQ0M7RUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDckNDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVk7RUFDN0MsQ0FBQyxDQUFDO0VBQ0YsT0FBT0MsZUFBQyxDQUFDQyxJQUFJLENBQUNMLE1BQU0sQ0FBQztBQUN2QixDQUFDO0FBV0RGLFFBQVEsQ0FBQ1EsYUFBYSxHQUFHLGVBQWVBLGFBQWFBLENBQUVDLFVBQVUsRUFBRTtFQUNqRSxNQUFNLElBQUksQ0FBQ04sSUFBSSxDQUFDLElBQUksRUFBRTtJQUNwQkMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWSxFQUFFSSxVQUFVO0VBQ3pELENBQUMsQ0FBQztBQUNKLENBQUM7QUFBQyxJQUFBQyxRQUFBLEdBRWFWLFFBQVE7QUFBQVcsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUEifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","names":["_lodash","_interopRequireDefault","require","commands","getAppearance","stdout","exec","args","requireUdid","_","trim","setAppearance","appearance","_default","exports","default"],"sources":["../../../lib/subcommands/ui.js"],"sourcesContent":["import _ from 'lodash';\n\n\nconst commands = {};\n\n/**\n * Retrieves the current UI appearance value from the given simulator\n *\n * @since Xcode 11.4 SDK\n * @return {string} the appearance value, for example 'light' or 'dark'\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while getting the value\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.getAppearance = async function getAppearance () {\n const {stdout} = await this.exec('ui', {\n args: [this.requireUdid('ui'), 'appearance'],\n });\n return _.trim(stdout);\n};\n\n/**\n * Sets the UI appearance to the given style\n *\n * @since Xcode 11.4 SDK\n * @param {string} appearance valid appearance value, for example 'light' or 'dark'\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while getting the value\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.setAppearance = async function setAppearance (appearance) {\n await this.exec('ui', {\n args: [this.requireUdid('ui'), 'appearance', appearance],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,MAAMC,QAAQ,GAAG,CAAC,CAAC;AAWnBA,QAAQ,CAACC,aAAa,GAAG,eAAeA,aAAaA,CAAA,EAAI;EACvD,MAAM;IAACC;EAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,IAAI,EAAE;IACrCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY;EAC7C,CAAC,CAAC;EACF,OAAOC,eAAC,CAACC,IAAI,CAACL,MAAM,CAAC;AACvB,CAAC;AAWDF,QAAQ,CAACQ,aAAa,GAAG,eAAeA,aAAaA,CAAEC,UAAU,EAAE;EACjE,MAAM,IAAI,CAACN,IAAI,CAAC,IAAI,EAAE;IACpBC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,EAAEI,UAAU;EACzD,CAAC,CAAC;AACJ,CAAC;AAAC,IAAAC,QAAA,GAEaV,QAAQ;AAAAW,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
1
|
+
{"version":3,"file":"ui.js","names":["_lodash","_interopRequireDefault","require","commands","getAppearance","stdout","exec","args","requireUdid","_","trim","setAppearance","appearance","_default","exports","default"],"sources":["../../../lib/subcommands/ui.js"],"sourcesContent":["import _ from 'lodash';\n\n\nconst commands = {};\n\n/**\n * Retrieves the current UI appearance value from the given simulator\n *\n * @since Xcode 11.4 SDK\n * @return {Promise<string>} the appearance value, for example 'light' or 'dark'\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while getting the value\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.getAppearance = async function getAppearance () {\n const {stdout} = await this.exec('ui', {\n args: [this.requireUdid('ui'), 'appearance'],\n });\n return _.trim(stdout);\n};\n\n/**\n * Sets the UI appearance to the given style\n *\n * @since Xcode 11.4 SDK\n * @param {string} appearance valid appearance value, for example 'light' or 'dark'\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while getting the value\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.setAppearance = async function setAppearance (appearance) {\n await this.exec('ui', {\n args: [this.requireUdid('ui'), 'appearance', appearance],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,MAAMC,QAAQ,GAAG,CAAC,CAAC;AAWnBA,QAAQ,CAACC,aAAa,GAAG,eAAeA,aAAaA,CAAA,EAAI;EACvD,MAAM;IAACC;EAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,IAAI,EAAE;IACrCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY;EAC7C,CAAC,CAAC;EACF,OAAOC,eAAC,CAACC,IAAI,CAACL,MAAM,CAAC;AACvB,CAAC;AAWDF,QAAQ,CAACQ,aAAa,GAAG,eAAeA,aAAaA,CAAEC,UAAU,EAAE;EACjE,MAAM,IAAI,CAACN,IAAI,CAAC,IAAI,EAAE;IACpBC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,EAAEI,UAAU;EACzD,CAAC,CAAC;AACJ,CAAC;AAAC,IAAAC,QAAA,GAEaV,QAAQ;AAAAW,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
package/lib/simctl.js
CHANGED
|
@@ -18,7 +18,7 @@ const DEFAULT_OPTS = {
|
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* @typedef {Object} ExecOpts
|
|
21
|
-
* @property {
|
|
21
|
+
* @property {string[]} args [[]] - The list of additional subcommand arguments.
|
|
22
22
|
* It's empty by default.
|
|
23
23
|
* @property {Object} env [{}] - Environment variables mapping. All these variables
|
|
24
24
|
* will be passed Simulator and used in the executing function.
|
|
@@ -26,34 +26,36 @@ const DEFAULT_OPTS = {
|
|
|
26
26
|
* immediately without logging any additional information.
|
|
27
27
|
* @property {boolean} asynchronous [false] - Whether to execute the given command
|
|
28
28
|
* 'synchronously' or 'asynchronously'. Affects the returned result of the function.
|
|
29
|
-
* @property {?
|
|
29
|
+
* @property {string?} encoding - Explicitly sets streams encoding for the executed
|
|
30
30
|
* command input and outputs.
|
|
31
|
+
* @property {string|string[]} architectures - One or more architecture names to be enforced while
|
|
32
|
+
* executing xcrun. See https://github.com/appium/appium/issues/18966 for more details.
|
|
31
33
|
*/
|
|
32
34
|
|
|
33
35
|
|
|
34
36
|
/**
|
|
35
37
|
* @typedef {Object} SimctlOpts
|
|
36
|
-
* @property {?
|
|
38
|
+
* @property {Object?} xcrun - The xcrun properties. Currently only one property
|
|
37
39
|
* is supported, which is `path` and it by default contains `null`, which enforces
|
|
38
40
|
* the instance to automatically detect the full path to `xcrun` tool and to throw
|
|
39
41
|
* an exception if it cannot be detected. If the path is set upon instance creation
|
|
40
42
|
* then it is going to be used by `exec` and no autodetection will happen.
|
|
41
|
-
* @property {
|
|
43
|
+
* @property {number} execTimeout [600000] - The maximum number of milliseconds
|
|
42
44
|
* to wait for single synchronous xcrun command.
|
|
43
|
-
* @property {
|
|
45
|
+
* @property {boolean} logErrors [true] - Whether to wire xcrun error messages
|
|
44
46
|
* into debug log before throwing them.
|
|
45
|
-
* @property {?
|
|
47
|
+
* @property {string?} udid - The unique identifier of the current device, which is
|
|
46
48
|
* going to be implicitly passed to all methods, which require it. It can either be set
|
|
47
49
|
* upon instance creation if it is already known in advance or later when/if needed via the
|
|
48
50
|
* corresponding instance setter.
|
|
49
|
-
* @property {?
|
|
51
|
+
* @property {string?} devicesSetPath - Full path to the set of devices that you want to manage.
|
|
50
52
|
* By default this path usually equals to ~/Library/Developer/CoreSimulator/Devices
|
|
51
53
|
*/
|
|
52
54
|
|
|
53
55
|
|
|
54
56
|
class Simctl {
|
|
55
57
|
/**
|
|
56
|
-
* @param {
|
|
58
|
+
* @param {SimctlOpts} opts
|
|
57
59
|
*/
|
|
58
60
|
constructor (opts = {}) {
|
|
59
61
|
opts = _.cloneDeep(opts);
|
|
@@ -109,8 +111,8 @@ class Simctl {
|
|
|
109
111
|
* @param {string} subcommand - One of available simctl subcommands.
|
|
110
112
|
* Execute `xcrun simctl` in Terminal to see the full list
|
|
111
113
|
* of available subcommands.
|
|
112
|
-
* @param {?
|
|
113
|
-
* @return {ExecResult|SubProcess} Either the result of teen process's `exec` or
|
|
114
|
+
* @param {ExecOpts?} opts
|
|
115
|
+
* @return {Promise<ExecResult|SubProcess>} Either the result of teen process's `exec` or
|
|
114
116
|
* `SubProcess` instance depending of `opts.asynchronous` value.
|
|
115
117
|
* @throws {Error} If the simctl subcommand command returns non-zero return code.
|
|
116
118
|
*/
|
|
@@ -121,6 +123,7 @@ class Simctl {
|
|
|
121
123
|
asynchronous = false,
|
|
122
124
|
encoding,
|
|
123
125
|
logErrors = true,
|
|
126
|
+
architectures,
|
|
124
127
|
} = opts;
|
|
125
128
|
// run a particular simctl command
|
|
126
129
|
args = ['simctl',
|
|
@@ -144,7 +147,14 @@ class Simctl {
|
|
|
144
147
|
}
|
|
145
148
|
const xcrun = await this.requireXcrun();
|
|
146
149
|
try {
|
|
147
|
-
|
|
150
|
+
let execArgs = [xcrun, args, execOpts];
|
|
151
|
+
if (!_.isEmpty(architectures)) {
|
|
152
|
+
const archArgs = _.flatMap(
|
|
153
|
+
(_.isArray(architectures) ? architectures : [architectures]).map((arch) => ['-arch', arch])
|
|
154
|
+
);
|
|
155
|
+
execArgs = ['arch', ...archArgs, ...execArgs];
|
|
156
|
+
}
|
|
157
|
+
return asynchronous ? new SubProcess(...execArgs) : await tpExec(...execArgs);
|
|
148
158
|
} catch (e) {
|
|
149
159
|
if (!this.logErrors || !logErrors) {
|
|
150
160
|
// if we don't want to see the errors, just throw and allow the calling
|
|
@@ -6,7 +6,7 @@ const commands = {};
|
|
|
6
6
|
*
|
|
7
7
|
* @param {string} filePath - Full path to a media file on the local
|
|
8
8
|
* file system.
|
|
9
|
-
* @return {ExecResult} Command execution result.
|
|
9
|
+
* @return {Promise<ExecResult>} Command execution result.
|
|
10
10
|
* @throws {Error} If the corresponding simctl subcommand command
|
|
11
11
|
* returns non-zero return code.
|
|
12
12
|
* @throws {Error} If the `udid` instance property is unset
|
|
@@ -8,7 +8,7 @@ const commands = {};
|
|
|
8
8
|
* The tool is only available since Xcode SDK 8.1
|
|
9
9
|
*
|
|
10
10
|
* @param {string} bundleId - The bundle identifier of the target application.
|
|
11
|
-
* @return {string} The information about installed application.
|
|
11
|
+
* @return {Promise<string>} The information about installed application.
|
|
12
12
|
*
|
|
13
13
|
* Example output for non-existing application container:
|
|
14
14
|
* <pre>
|
|
@@ -6,13 +6,13 @@ const commands = {};
|
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* @typedef {Object} BootMonitorOptions
|
|
9
|
-
* @property {
|
|
10
|
-
* @property {?
|
|
11
|
-
* @property {?
|
|
12
|
-
* @property {?
|
|
13
|
-
* @property {?
|
|
9
|
+
* @property {number} timeout [240000] - Simulator booting timeout in ms.
|
|
10
|
+
* @property {Function?} onWaitingDataMigration - This event is fired when data migration stage starts.
|
|
11
|
+
* @property {Function?} onWaitingSystemApp - This event is fired when system app wait stage starts.
|
|
12
|
+
* @property {Function?} onFinished - This event is fired when Simulator is fully booted.
|
|
13
|
+
* @property {Function?} onError - This event is fired when there was an error while monitoring the booting process
|
|
14
14
|
* or when the timeout has expired.
|
|
15
|
-
* @property {
|
|
15
|
+
* @property {boolean} shouldPreboot [false] Whether to preboot the Simulator
|
|
16
16
|
* if this command is called and it is not already in booted or booting state.
|
|
17
17
|
*/
|
|
18
18
|
|
|
@@ -22,8 +22,8 @@ const commands = {};
|
|
|
22
22
|
* until Simulator booting is completed.
|
|
23
23
|
* The method is only available since Xcode8.
|
|
24
24
|
*
|
|
25
|
-
* @param {
|
|
26
|
-
* @returns {SubProcess} The instance of the corresponding monitoring process.
|
|
25
|
+
* @param {BootMonitorOptions} opts - Monitoring options.
|
|
26
|
+
* @returns {Promise<SubProcess>} The instance of the corresponding monitoring process.
|
|
27
27
|
* @throws {Error} If the Simulator fails to finish booting within the given timeout and onFinished
|
|
28
28
|
* property is not set.
|
|
29
29
|
* @throws {Error} If the `udid` instance property is unset
|
|
@@ -23,8 +23,8 @@ const commands = {};
|
|
|
23
23
|
* @param {string} name - The device name to be created.
|
|
24
24
|
* @param {string} deviceTypeId - Device type, for example 'iPhone 6'.
|
|
25
25
|
* @param {string} platformVersion - Platform version, for example '10.3'.
|
|
26
|
-
* @param {
|
|
27
|
-
* @return {string} The UDID of the newly created device.
|
|
26
|
+
* @param {SimCreationOpts} opts - Simulator options for creating devices.
|
|
27
|
+
* @return {Promise<string>} The UDID of the newly created device.
|
|
28
28
|
* @throws {Error} If the corresponding simctl subcommand command
|
|
29
29
|
* returns non-zero return code.
|
|
30
30
|
*/
|
|
@@ -8,10 +8,10 @@ const commands = {};
|
|
|
8
8
|
* It is required that Simulator is in _booted_ state.
|
|
9
9
|
*
|
|
10
10
|
* @param {string} bundleId - Bundle identifier of an application.
|
|
11
|
-
* @param {?
|
|
11
|
+
* @param {string?} containerType - Which container type to return. Possible values
|
|
12
12
|
* are 'app', 'data', 'groups', '<A specific App Group container>'.
|
|
13
13
|
* The default value is 'app'.
|
|
14
|
-
* @return {string} Full path to the given application container on the local
|
|
14
|
+
* @return {Promise<string>} Full path to the given application container on the local
|
|
15
15
|
* file system.
|
|
16
16
|
* @throws {Error} If the corresponding simctl subcommand command
|
|
17
17
|
* returns non-zero return code.
|
|
@@ -4,7 +4,7 @@ const commands = {};
|
|
|
4
4
|
* Retrieves the value of a Simulator environment variable
|
|
5
5
|
*
|
|
6
6
|
* @param {string} varName - The name of the variable to be retrieved
|
|
7
|
-
* @returns {
|
|
7
|
+
* @returns {Promise<string|null>} The value of the variable or null if the given variable
|
|
8
8
|
* is not present in the Simulator environment
|
|
9
9
|
* @throws {Error} If there was an error while running the command
|
|
10
10
|
* @throws {Error} If the `udid` instance property is unset
|
package/lib/subcommands/io.js
CHANGED
|
@@ -11,7 +11,7 @@ const commands = {};
|
|
|
11
11
|
* It is required that Simulator is in _booted_ state.
|
|
12
12
|
*
|
|
13
13
|
* @since Xcode SDK 8.1
|
|
14
|
-
* @return {string} Base64-encoded Simulator screenshot.
|
|
14
|
+
* @return {Promise<string>} Base64-encoded Simulator screenshot.
|
|
15
15
|
* @throws {Error} If the corresponding simctl subcommand command
|
|
16
16
|
* returns non-zero return code.
|
|
17
17
|
* @throws {Error} If the `udid` instance property is unset
|
|
@@ -12,7 +12,7 @@ const commands = {};
|
|
|
12
12
|
* which is going to be removed.
|
|
13
13
|
* @param {number} tries [5] - The maximum number of retries before
|
|
14
14
|
* throwing an exception.
|
|
15
|
-
* @return {string} the actual command output
|
|
15
|
+
* @return {Promise<string>} the actual command output
|
|
16
16
|
* @throws {Error} If the corresponding simctl subcommand command
|
|
17
17
|
* returns non-zero return code.
|
|
18
18
|
* @throws {Error} If the `udid` instance property is unset
|