node-simctl 7.1.4 → 7.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -0
- package/build/index.js +1 -5
- package/build/lib/helpers.js +1 -10
- package/build/lib/helpers.js.map +1 -0
- package/build/lib/logger.js +1 -9
- package/build/lib/logger.js.map +1 -0
- package/build/lib/simctl.js +1 -36
- package/build/lib/simctl.js.map +1 -0
- package/build/lib/subcommands/addmedia.js +1 -5
- package/build/lib/subcommands/addmedia.js.map +1 -0
- package/build/lib/subcommands/appinfo.js +1 -5
- package/build/lib/subcommands/appinfo.js.map +1 -0
- package/build/lib/subcommands/boot.js +1 -11
- package/build/lib/subcommands/boot.js.map +1 -0
- package/build/lib/subcommands/bootstatus.js +1 -19
- package/build/lib/subcommands/bootstatus.js.map +1 -0
- package/build/lib/subcommands/create.js +1 -26
- package/build/lib/subcommands/create.js.map +1 -0
- package/build/lib/subcommands/delete.js +1 -5
- package/build/lib/subcommands/delete.js.map +1 -0
- package/build/lib/subcommands/erase.js +1 -6
- package/build/lib/subcommands/erase.js.map +1 -0
- package/build/lib/subcommands/get_app_container.js +1 -7
- package/build/lib/subcommands/get_app_container.js.map +1 -0
- package/build/lib/subcommands/getenv.js +1 -5
- package/build/lib/subcommands/getenv.js.map +1 -0
- package/build/lib/subcommands/index.js +1 -29
- package/build/lib/subcommands/index.js.map +1 -0
- package/build/lib/subcommands/install.js +1 -5
- package/build/lib/subcommands/install.js.map +1 -0
- package/build/lib/subcommands/io.js +1 -16
- package/build/lib/subcommands/io.js.map +1 -0
- package/build/lib/subcommands/keychain.js +1 -24
- package/build/lib/subcommands/keychain.js.map +1 -0
- package/build/lib/subcommands/launch.js +1 -8
- package/build/lib/subcommands/launch.js.map +1 -0
- package/build/lib/subcommands/list.js +1 -43
- package/build/lib/subcommands/list.js.map +1 -0
- package/build/lib/subcommands/location.js +1 -9
- package/build/lib/subcommands/location.js.map +1 -0
- package/build/lib/subcommands/openurl.js +1 -5
- package/build/lib/subcommands/openurl.js.map +1 -0
- package/build/lib/subcommands/pbcopy.js +1 -5
- package/build/lib/subcommands/pbcopy.js.map +1 -0
- package/build/lib/subcommands/pbpaste.js +1 -5
- package/build/lib/subcommands/pbpaste.js.map +1 -0
- package/build/lib/subcommands/privacy.js +1 -7
- package/build/lib/subcommands/privacy.js.map +1 -0
- package/build/lib/subcommands/push.js +1 -15
- package/build/lib/subcommands/push.js.map +1 -0
- package/build/lib/subcommands/shutdown.js +1 -11
- package/build/lib/subcommands/shutdown.js.map +1 -0
- package/build/lib/subcommands/spawn.js +1 -10
- package/build/lib/subcommands/spawn.js.map +1 -0
- package/build/lib/subcommands/terminate.js +1 -5
- package/build/lib/subcommands/terminate.js.map +1 -0
- package/build/lib/subcommands/ui.js +1 -8
- package/build/lib/subcommands/ui.js.map +1 -0
- package/build/lib/subcommands/uninstall.js +1 -5
- package/build/lib/subcommands/uninstall.js.map +1 -0
- package/package.json +6 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keychain.js","names":["commands","rimrafAsync","B","promisify","rimraf","writeFileAsync","fs","writeFile","handleRawPayload","payload","onPayloadStored","filePath","path","resolve","os","tmpdir","uuidV4","_","isBuffer","addRootCertificate","cert","opts","raw","execMethod","certPath","exec","args","requireUdid","addCertificate","resetKeychain"],"sources":["../../../lib/subcommands/keychain.js"],"sourcesContent":["import os from 'os';\nimport fs from 'fs';\nimport B from 'bluebird';\nimport { v4 as uuidV4 } from 'uuid';\nimport path from 'path';\nimport _ from 'lodash';\nimport rimraf from 'rimraf';\n\nconst commands = {};\nconst rimrafAsync = B.promisify(rimraf);\nconst writeFileAsync = B.promisify(fs.writeFile);\n\nasync function handleRawPayload (payload, onPayloadStored) {\n const filePath = path.resolve(os.tmpdir(), `${uuidV4()}.pem`);\n try {\n if (_.isBuffer(payload)) {\n await writeFileAsync(filePath, payload);\n } else {\n await writeFileAsync(filePath, payload, 'utf8');\n }\n await onPayloadStored(filePath);\n } finally {\n await rimrafAsync(filePath);\n }\n}\n\n\n/**\n * @typedef {Object} CertOptions\n * @property {boolean} raw [false] - whether the `cert` argument\n * is the path to the certificate on the local file system or\n * a raw certificate content\n */\n\n/**\n * Adds the given certificate to the Trusted Root Store on the simulator\n *\n * @since Xcode 11.4 SDK\n * @param {string} cert the full path to a valid .cert file containing\n * the certificate content or the certificate content itself, depending on\n * options\n * @param {CertOptions} opts\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while adding the certificate\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.addRootCertificate = async function addRootCertificate (cert, opts = {}) {\n const {\n raw = false,\n } = opts;\n const execMethod = async (certPath) => await this.exec('keychain', {\n args: [this.requireUdid('keychain add-root-cert'), 'add-root-cert', certPath],\n });\n if (raw) {\n await handleRawPayload(cert, execMethod);\n } else {\n await execMethod(cert);\n }\n};\n\n/**\n * Adds the given certificate to the Keychain Store on the simulator\n *\n * @since Xcode 11.4 SDK\n * @param {string} cert the full path to a valid .cert file containing\n * the certificate content or the certificate content itself, depending on\n * options\n * @param {CertOptions} opts\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while adding the certificate\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.addCertificate = async function addCertificate (cert, opts = {}) {\n const {\n raw = false,\n } = opts;\n const execMethod = async (certPath) => await this.exec('keychain', {\n args: [this.requireUdid('keychain add-cert'), 'add-cert', certPath],\n });\n if (raw) {\n await handleRawPayload(cert, execMethod);\n } else {\n await execMethod(cert);\n }\n};\n\n/**\n * Resets the simulator keychain\n *\n * @since Xcode 11.4 SDK\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while resetting the keychain\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.resetKeychain = async function resetKeychain () {\n await this.exec('keychain', {\n args: [this.requireUdid('keychain reset'), 'reset'],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAMC,WAAW,GAAGC,iBAAC,CAACC,SAAS,CAACC,eAAM,CAAC;AACvC,MAAMC,cAAc,GAAGH,iBAAC,CAACC,SAAS,CAACG,WAAE,CAACC,SAAS,CAAC;AAEhD,eAAeC,gBAAgB,CAAEC,OAAO,EAAEC,eAAe,EAAE;EACzD,MAAMC,QAAQ,GAAGC,aAAI,CAACC,OAAO,CAACC,WAAE,CAACC,MAAM,EAAE,EAAG,GAAE,IAAAC,QAAM,GAAG,MAAK,CAAC;EAC7D,IAAI;IACF,IAAIC,eAAC,CAACC,QAAQ,CAACT,OAAO,CAAC,EAAE;MACvB,MAAMJ,cAAc,CAACM,QAAQ,EAAEF,OAAO,CAAC;IACzC,CAAC,MAAM;MACL,MAAMJ,cAAc,CAACM,QAAQ,EAAEF,OAAO,EAAE,MAAM,CAAC;IACjD;IACA,MAAMC,eAAe,CAACC,QAAQ,CAAC;EACjC,CAAC,SAAS;IACR,MAAMV,WAAW,CAACU,QAAQ,CAAC;EAC7B;AACF;AAsBAX,QAAQ,CAACmB,kBAAkB,GAAG,eAAeA,kBAAkB,CAAEC,IAAI,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EAChF,MAAM;IACJC,GAAG,GAAG;EACR,CAAC,GAAGD,IAAI;EACR,MAAME,UAAU,GAAG,MAAOC,QAAQ,IAAK,MAAM,IAAI,CAACC,IAAI,CAAC,UAAU,EAAE;IACjEC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,wBAAwB,CAAC,EAAE,eAAe,EAAEH,QAAQ;EAC9E,CAAC,CAAC;EACF,IAAIF,GAAG,EAAE;IACP,MAAMd,gBAAgB,CAACY,IAAI,EAAEG,UAAU,CAAC;EAC1C,CAAC,MAAM;IACL,MAAMA,UAAU,CAACH,IAAI,CAAC;EACxB;AACF,CAAC;AAcDpB,QAAQ,CAAC4B,cAAc,GAAG,eAAeA,cAAc,CAAER,IAAI,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EACxE,MAAM;IACJC,GAAG,GAAG;EACR,CAAC,GAAGD,IAAI;EACR,MAAME,UAAU,GAAG,MAAOC,QAAQ,IAAK,MAAM,IAAI,CAACC,IAAI,CAAC,UAAU,EAAE;IACjEC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAEH,QAAQ;EACpE,CAAC,CAAC;EACF,IAAIF,GAAG,EAAE;IACP,MAAMd,gBAAgB,CAACY,IAAI,EAAEG,UAAU,CAAC;EAC1C,CAAC,MAAM;IACL,MAAMA,UAAU,CAACH,IAAI,CAAC;EACxB;AACF,CAAC;AAUDpB,QAAQ,CAAC6B,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAM,IAAI,CAACJ,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,gBAAgB,CAAC,EAAE,OAAO;EACpD,CAAC,CAAC;AACJ,CAAC;AAAC,eAEa3B,QAAQ;AAAA"}
|
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
|
-
|
|
14
10
|
var _asyncbox = require("asyncbox");
|
|
15
|
-
|
|
16
11
|
const commands = {};
|
|
17
|
-
|
|
18
12
|
commands.launchApp = async function launchApp(bundleId, tries = 5) {
|
|
19
13
|
return await (0, _asyncbox.retryInterval)(tries, 1000, async () => {
|
|
20
14
|
const {
|
|
@@ -25,7 +19,6 @@ commands.launchApp = async function launchApp(bundleId, tries = 5) {
|
|
|
25
19
|
return _lodash.default.trim(stdout);
|
|
26
20
|
});
|
|
27
21
|
};
|
|
28
|
-
|
|
29
22
|
var _default = commands;
|
|
30
23
|
exports.default = _default;
|
|
31
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImxhdW5jaEFwcCIsImJ1bmRsZUlkIiwidHJpZXMiLCJyZXRyeUludGVydmFsIiwic3Rkb3V0IiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsIl8iLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL2xhdW5jaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBFeGVjdXRlIHRoZSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIHBhY2thZ2Ugb24gU2ltdWxhdG9yLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUgYW5kXG4gKiB0aGUgYXBwbGljYXRpb24gd2l0aCBnaXZlbiBidW5kbGUgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBCdW5kbGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24sXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBnb2luZyB0byBiZSByZW1vdmVkLlxuICogQHBhcmFtIHtudW1iZXJ9IHRyaWVzIFs1XSAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGJlZm9yZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93aW5nIGFuIGV4Y2VwdGlvbi5cbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGFjdHVhbCBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMubGF1bmNoQXBwID0gYXN5bmMgZnVuY3Rpb24gbGF1bmNoQXBwIChidW5kbGVJZCwgdHJpZXMgPSA1KSB7XG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHRyaWVzLCAxMDAwLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ2xhdW5jaCcsIHtcbiAgICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsYXVuY2gnKSwgYnVuZGxlSWRdLFxuICAgIH0pO1xuICAgIHJldHVybiBfLnRyaW0oc3Rkb3V0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQztBQWdCbkJBLFFBQVEsQ0FBQ0MsU0FBUyxHQUFHLGVBQWVBLFNBQVMsQ0FBRUMsUUFBUSxFQUFFQyxLQUFLLEdBQUcsQ0FBQyxFQUFFO0VBQ2xFLE9BQU8sTUFBTSxJQUFBQyx1QkFBYSxFQUFDRCxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVk7SUFDbEQsTUFBTTtNQUFDRTtJQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFFBQVEsRUFBRTtNQUN6Q0MsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUVOLFFBQVE7SUFDN0MsQ0FBQyxDQUFDO0lBQ0YsT0FBT08sZUFBQyxDQUFDQyxJQUFJLENBQUNMLE1BQU0sQ0FBQztFQUN2QixDQUFDLENBQUM7QUFDSixDQUFDO0FBQUMsZUFFYUwsUUFBUTtBQUFBIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch.js","names":["commands","launchApp","bundleId","tries","retryInterval","stdout","exec","args","requireUdid","_","trim"],"sources":["../../../lib/subcommands/launch.js"],"sourcesContent":["import _ from 'lodash';\nimport { retryInterval } from 'asyncbox';\n\nconst commands = {};\n\n/**\n * Execute the particular application package on Simulator.\n * It is required that Simulator is in _booted_ state and\n * the application with given bundle identifier is already installed.\n *\n * @param {string} bundleId - Bundle identifier of the application,\n * which is going to be removed.\n * @param {number} tries [5] - The maximum number of retries before\n * throwing an exception.\n * @return {string} the actual command output\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.launchApp = async function launchApp (bundleId, tries = 5) {\n return await retryInterval(tries, 1000, async () => {\n const {stdout} = await this.exec('launch', {\n args: [this.requireUdid('launch'), bundleId],\n });\n return _.trim(stdout);\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAgBnBA,QAAQ,CAACC,SAAS,GAAG,eAAeA,SAAS,CAAEC,QAAQ,EAAEC,KAAK,GAAG,CAAC,EAAE;EAClE,OAAO,MAAM,IAAAC,uBAAa,EAACD,KAAK,EAAE,IAAI,EAAE,YAAY;IAClD,MAAM;MAACE;IAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE;MACzCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,QAAQ,CAAC,EAAEN,QAAQ;IAC7C,CAAC,CAAC;IACF,OAAOO,eAAC,CAACC,IAAI,CAACL,MAAM,CAAC;EACvB,CAAC,CAAC;AACJ,CAAC;AAAC,eAEaL,QAAQ;AAAA"}
|
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
|
-
|
|
14
10
|
var _helpers = require("../helpers");
|
|
15
|
-
|
|
16
11
|
var _logger = _interopRequireWildcard(require("../logger"));
|
|
17
|
-
|
|
18
12
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
-
|
|
20
13
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
|
|
22
14
|
const commands = {};
|
|
23
|
-
|
|
24
15
|
commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
|
|
25
16
|
const {
|
|
26
17
|
stdout
|
|
@@ -30,33 +21,25 @@ commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
|
|
|
30
21
|
const deviceSectionRe = _lodash.default.isEmpty(platform) ? new RegExp(`\\-\\-\\s+(\\S+)\\s+(\\S+)\\s+\\-\\-(\\n\\s{4}.+)*`, 'mgi') : new RegExp(`\\-\\-\\s+${_lodash.default.escapeRegExp(platform)}\\s+(\\S+)\\s+\\-\\-(\\n\\s{4}.+)*`, 'mgi');
|
|
31
22
|
const matches = [];
|
|
32
23
|
let match;
|
|
33
|
-
|
|
34
24
|
while (match = deviceSectionRe.exec(stdout)) {
|
|
35
25
|
matches.push(match);
|
|
36
26
|
}
|
|
37
|
-
|
|
38
27
|
if (_lodash.default.isEmpty(matches)) {
|
|
39
28
|
throw new Error('Could not find device section');
|
|
40
29
|
}
|
|
41
|
-
|
|
42
30
|
const lineRe = /([^\s].+) \((\w+-.+\w+)\) \((\w+\s?\w+)\)/;
|
|
43
31
|
const devices = {};
|
|
44
|
-
|
|
45
32
|
for (match of matches) {
|
|
46
33
|
const sdk = platform ? match[1] : match[2];
|
|
47
34
|
devices[sdk] = devices[sdk] || [];
|
|
48
|
-
|
|
49
35
|
for (const line of match[0].split('\n').slice(1)) {
|
|
50
36
|
if (line.includes('(unavailable, ')) {
|
|
51
37
|
continue;
|
|
52
38
|
}
|
|
53
|
-
|
|
54
39
|
const lineMatch = lineRe.exec(line);
|
|
55
|
-
|
|
56
40
|
if (!lineMatch) {
|
|
57
41
|
throw new Error(`Could not match line: ${line}`);
|
|
58
42
|
}
|
|
59
|
-
|
|
60
43
|
devices[sdk].push({
|
|
61
44
|
name: lineMatch[1],
|
|
62
45
|
udid: lineMatch[2],
|
|
@@ -66,13 +49,10 @@ commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
|
|
|
66
49
|
});
|
|
67
50
|
}
|
|
68
51
|
}
|
|
69
|
-
|
|
70
52
|
return devices;
|
|
71
53
|
};
|
|
72
|
-
|
|
73
54
|
commands.getDevices = async function getDevices(forSdk, platform) {
|
|
74
55
|
let devices = {};
|
|
75
|
-
|
|
76
56
|
try {
|
|
77
57
|
const {
|
|
78
58
|
stdout
|
|
@@ -80,15 +60,12 @@ commands.getDevices = async function getDevices(forSdk, platform) {
|
|
|
80
60
|
args: ['devices', '-j']
|
|
81
61
|
});
|
|
82
62
|
const versionMatchRe = _lodash.default.isEmpty(platform) ? new RegExp(`^([^\\s-]+)[\\s-](\\S+)`, 'i') : new RegExp(`^${_lodash.default.escapeRegExp(platform)}[\\s-](\\S+)`, 'i');
|
|
83
|
-
|
|
84
63
|
for (let [sdkName, entries] of _lodash.default.toPairs(JSON.parse(stdout).devices)) {
|
|
85
64
|
sdkName = sdkName.replace(_helpers.SIM_RUNTIME_NAME, '');
|
|
86
65
|
const versionMatch = versionMatchRe.exec(sdkName);
|
|
87
|
-
|
|
88
66
|
if (!versionMatch) {
|
|
89
67
|
continue;
|
|
90
68
|
}
|
|
91
|
-
|
|
92
69
|
const sdk = (platform ? versionMatch[1] : versionMatch[2]).replace('-', '.');
|
|
93
70
|
devices[sdk] = devices[sdk] || [];
|
|
94
71
|
devices[sdk].push(...entries.filter(el => _lodash.default.isUndefined(el.isAvailable) || el.isAvailable).map(el => {
|
|
@@ -102,35 +79,26 @@ commands.getDevices = async function getDevices(forSdk, platform) {
|
|
|
102
79
|
}
|
|
103
80
|
} catch (err) {
|
|
104
81
|
_logger.default.debug(_logger.LOG_PREFIX, `Unable to get JSON device list: ${err.stack}`);
|
|
105
|
-
|
|
106
82
|
_logger.default.debug(_logger.LOG_PREFIX, 'Falling back to manual parsing');
|
|
107
|
-
|
|
108
83
|
devices = await this.getDevicesByParsing(platform);
|
|
109
84
|
}
|
|
110
|
-
|
|
111
85
|
if (!forSdk) {
|
|
112
86
|
return devices;
|
|
113
87
|
}
|
|
114
|
-
|
|
115
88
|
if (devices[forSdk]) {
|
|
116
89
|
return devices[forSdk];
|
|
117
90
|
}
|
|
118
|
-
|
|
119
91
|
let errMsg = `'${forSdk}' does not exist in the list of simctl SDKs.`;
|
|
120
|
-
|
|
121
92
|
const availableSDKs = _lodash.default.keys(devices);
|
|
122
|
-
|
|
123
93
|
errMsg += availableSDKs.length ? ` Only the following Simulator SDK versions are available on your system: ${availableSDKs.join(', ')}` : ` No Simulator SDK versions are available on your system. Please install some via Xcode preferences.`;
|
|
124
94
|
throw new Error(errMsg);
|
|
125
95
|
};
|
|
126
|
-
|
|
127
96
|
commands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatformVersionViaJson(platformVersion, platform = 'iOS') {
|
|
128
97
|
const {
|
|
129
98
|
stdout
|
|
130
99
|
} = await this.exec('list', {
|
|
131
100
|
args: ['runtimes', '--json']
|
|
132
101
|
});
|
|
133
|
-
|
|
134
102
|
for (const {
|
|
135
103
|
version,
|
|
136
104
|
identifier,
|
|
@@ -140,10 +108,8 @@ commands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatf
|
|
|
140
108
|
return identifier;
|
|
141
109
|
}
|
|
142
110
|
}
|
|
143
|
-
|
|
144
111
|
throw new Error(`Could not use --json flag to parse platform version`);
|
|
145
112
|
};
|
|
146
|
-
|
|
147
113
|
commands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVersion(platformVersion, platform = 'iOS') {
|
|
148
114
|
try {
|
|
149
115
|
const {
|
|
@@ -152,26 +118,21 @@ commands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVers
|
|
|
152
118
|
args: ['runtimes']
|
|
153
119
|
});
|
|
154
120
|
const runtimeRe = new RegExp(`${_lodash.default.escapeRegExp(platform)}\\s+(\\d+\\.\\d+)\\s+\\((\\d+\\.\\d+\\.*\\d*)`, 'i');
|
|
155
|
-
|
|
156
121
|
for (const line of stdout.split('\n')) {
|
|
157
122
|
const match = runtimeRe.exec(line);
|
|
158
|
-
|
|
159
123
|
if (match && match[1] === platformVersion) {
|
|
160
124
|
return match[2];
|
|
161
125
|
}
|
|
162
126
|
}
|
|
163
127
|
} catch (ign) {}
|
|
164
|
-
|
|
165
128
|
return platformVersion;
|
|
166
129
|
};
|
|
167
|
-
|
|
168
130
|
commands.getDeviceTypes = async function getDeviceTypes() {
|
|
169
131
|
const {
|
|
170
132
|
stdout
|
|
171
133
|
} = await this.exec('list', {
|
|
172
134
|
args: ['devicetypes', '-j']
|
|
173
135
|
});
|
|
174
|
-
|
|
175
136
|
try {
|
|
176
137
|
const deviceTypes = JSON.parse(stdout.trim());
|
|
177
138
|
return deviceTypes.devicetypes.map(type => type.name);
|
|
@@ -179,21 +140,18 @@ commands.getDeviceTypes = async function getDeviceTypes() {
|
|
|
179
140
|
throw new Error(`Unable to get list of device types: ${err.message}`);
|
|
180
141
|
}
|
|
181
142
|
};
|
|
182
|
-
|
|
183
143
|
commands.list = async function list() {
|
|
184
144
|
const {
|
|
185
145
|
stdout
|
|
186
146
|
} = await this.exec('list', {
|
|
187
147
|
args: ['-j']
|
|
188
148
|
});
|
|
189
|
-
|
|
190
149
|
try {
|
|
191
150
|
return JSON.parse(stdout.trim());
|
|
192
151
|
} catch (e) {
|
|
193
152
|
throw new Error(`Unable to parse simctl list: ${e.message}`);
|
|
194
153
|
}
|
|
195
154
|
};
|
|
196
|
-
|
|
197
155
|
var _default = commands;
|
|
198
156
|
exports.default = _default;
|
|
199
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldERldmljZXNCeVBhcnNpbmciLCJwbGF0Zm9ybSIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwiZGV2aWNlU2VjdGlvblJlIiwiXyIsImlzRW1wdHkiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaGVzIiwibWF0Y2giLCJwdXNoIiwiRXJyb3IiLCJsaW5lUmUiLCJkZXZpY2VzIiwic2RrIiwibGluZSIsInNwbGl0Iiwic2xpY2UiLCJpbmNsdWRlcyIsImxpbmVNYXRjaCIsIm5hbWUiLCJ1ZGlkIiwic3RhdGUiLCJnZXREZXZpY2VzIiwiZm9yU2RrIiwidmVyc2lvbk1hdGNoUmUiLCJzZGtOYW1lIiwiZW50cmllcyIsInRvUGFpcnMiLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwiU0lNX1JVTlRJTUVfTkFNRSIsInZlcnNpb25NYXRjaCIsImZpbHRlciIsImVsIiwiaXNVbmRlZmluZWQiLCJpc0F2YWlsYWJsZSIsIm1hcCIsImF2YWlsYWJpbGl0eSIsImVyciIsImxvZyIsImRlYnVnIiwiTE9HX1BSRUZJWCIsInN0YWNrIiwiZXJyTXNnIiwiYXZhaWxhYmxlU0RLcyIsImtleXMiLCJsZW5ndGgiLCJqb2luIiwiZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24iLCJwbGF0Zm9ybVZlcnNpb24iLCJ2ZXJzaW9uIiwiaWRlbnRpZmllciIsInJ1bnRpbWVzIiwibm9ybWFsaXplVmVyc2lvbiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24iLCJydW50aW1lUmUiLCJpZ24iLCJnZXREZXZpY2VUeXBlcyIsImRldmljZVR5cGVzIiwidHJpbSIsImRldmljZXR5cGVzIiwidHlwZSIsIm1lc3NhZ2UiLCJsaXN0IiwiZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTSU1fUlVOVElNRV9OQU1FLCBub3JtYWxpemVWZXJzaW9uIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgbG9nLCB7IExPR19QUkVGSVggfSBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgZGV2aWNlIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdWRpZCAtIFRoZSBkZXZpY2UgVURJRC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBjdXJyZW50IFNpbXVsYXRvciBzdGF0ZSwgZm9yIGV4YW1wbGUgJ2Jvb3RlZCcgb3IgJ3NodXRkb3duJy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZGsgLSBUaGUgU0RLIHZlcnNpb24sIGZvciBleGFtcGxlICcxMC4zJy5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIFNpbXVsYXRvciBkZXZpY2VzIHRvIHJlcHJlc2VudFxuICogaXQgYXMgY29udmVuaWVudCBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIG1hcHBpbmcuIEVhY2gga2V5IGlzIHBsYXRmb3JtIHZlcnNpb24sXG4gKiAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgYW5cbiAqICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgdGhlIG1hdGNoaW5nIHtAbGluayBEZXZpY2VJbmZvfSBpbnN0YW5jZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXNCeVBhcnNpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzQnlQYXJzaW5nIChwbGF0Zm9ybSkge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ2RldmljZXMnXSxcbiAgfSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGNvbnN0IGRldmljZVNlY3Rpb25SZSA9IF8uaXNFbXB0eShwbGF0Zm9ybSlcbiAgICA/IG5ldyBSZWdFeHAoYFxcXFwtXFxcXC1cXFxccysoXFxcXFMrKVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKVxuICAgIDogbmV3IFJlZ0V4cChgXFxcXC1cXFxcLVxcXFxzKyR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKTtcbiAgY29uc3QgbWF0Y2hlcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKChtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCkpKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG1hdGNoZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgbGluZVJlID0gLyhbXlxcc10uKykgXFwoKFxcdystLitcXHcrKVxcKSBcXCgoXFx3K1xccz9cXHcrKVxcKS87IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvbEc3bUs2LzNcbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgY29uc3QgZGV2aWNlcyA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBjb25zdCBzZGsgPSBwbGF0Zm9ybSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMF0uc3BsaXQoJ1xcbicpLnNsaWNlKDEpKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnKHVuYXZhaWxhYmxlLCAnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBjb25zdCBsaW5lTWF0Y2ggPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbGluZU1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGxpbmU6ICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICAgIHNkayxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IG1hdGNoWzFdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXZpY2VzO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbGlzdCBvZiBleGlzdGluZyBTaW11bGF0b3IgZGV2aWNlcyB0byByZXByZXNlbnRcbiAqIGl0IGFzIGNvbnZlbmllbnQgbWFwcGluZyBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGZvclNkayAtIFRoZSBzZGsgdmVyc2lvbixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBkZXZpY2VzIGxpc3Qgc2hvdWxkIGJlIHBhcnNlZCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtPYmplY3R8QXJyYXk8RGV2aWNlSW5mbz59IElmIF9mb3JTZGtfIGlzIHNldCB0aGVuIHRoZSBsaXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGRldmljZXMgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB0aGUgc2FtZSByZXN1bHQgYXMgZm9yIHtAbGluayBnZXREZXZpY2VzQnlQYXJzaW5nfVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZSBvciBpZiBubyBtYXRjaGluZ1xuICogICAgICAgICAgICAgICAgIHBsYXRmb3JtIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIHN5c3RlbS5cbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZXMgKGZvclNkaywgcGxhdGZvcm0pIHtcbiAgbGV0IGRldmljZXMgPSB7fTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICAgIGFyZ3M6IFsnZGV2aWNlcycsICctaiddLFxuICAgIH0pO1xuICAgIC8qIEpTT04gc2hvdWxkIGJlXG4gICAgICoge1xuICAgICAqICAgXCJkZXZpY2VzXCIgOiB7XG4gICAgICogICAgIFwiaU9TIDxzZGs+XCIgOiBbIC8vIG9yXG4gICAgICogICAgIFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtPHNkaz4gOiBbXG4gICAgICogICAgICAge1xuICAgICAqICAgICAgICAgXCJzdGF0ZVwiIDogXCJCb290ZWRcIixcbiAgICAgKiAgICAgICAgIFwiYXZhaWxhYmlsaXR5XCIgOiBcIihhdmFpbGFibGUpXCIsXG4gICAgICogICAgICAgICBcImlzQXZhaWxhYmxlXCIgOiB0cnVlLFxuICAgICAqICAgICAgICAgXCJuYW1lXCIgOiBcImlQaG9uZSA2XCIsXG4gICAgICogICAgICAgICBcInVkaWRcIiA6IFwiNzVFMzQxNDAtMThFOC00RDFBLTlGNDUtQUFDNzM1REY3NURGXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIF1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgY29uc3QgdmVyc2lvbk1hdGNoUmUgPSBfLmlzRW1wdHkocGxhdGZvcm0pXG4gICAgICA/IG5ldyBSZWdFeHAoYF4oW15cXFxccy1dKylbXFxcXHMtXShcXFxcUyspYCwgJ2knKVxuICAgICAgOiBuZXcgUmVnRXhwKGBeJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9W1xcXFxzLV0oXFxcXFMrKWAsICdpJyk7XG4gICAgZm9yIChsZXQgW3Nka05hbWUsIGVudHJpZXNdIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHN0ZG91dCkuZGV2aWNlcykpIHtcbiAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGEgbG9uZ2VyIG5hbWUsIHNvIHJlbW92ZSBpdFxuICAgICAgc2RrTmFtZSA9IHNka05hbWUucmVwbGFjZShTSU1fUlVOVElNRV9OQU1FLCAnJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSB2ZXJzaW9uTWF0Y2hSZS5leGVjKHNka05hbWUpO1xuICAgICAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBzZGsgY2FuIGhhdmUgZGFzaGVzIChgMTItMmApIG9yIGRvdHMgKGAxMi4xYClcbiAgICAgIGNvbnN0IHNkayA9IChwbGF0Zm9ybSA/IHZlcnNpb25NYXRjaFsxXSA6IHZlcnNpb25NYXRjaFsyXSkucmVwbGFjZSgnLScsICcuJyk7XG4gICAgICBkZXZpY2VzW3Nka10gPSBkZXZpY2VzW3Nka10gfHwgW107XG4gICAgICBkZXZpY2VzW3Nka10ucHVzaCguLi5lbnRyaWVzLmZpbHRlcigoZWwpID0+IF8uaXNVbmRlZmluZWQoZWwuaXNBdmFpbGFibGUpIHx8IGVsLmlzQXZhaWxhYmxlKVxuICAgICAgICAubWFwKChlbCkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbC5hdmFpbGFiaWxpdHk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNkayxcbiAgICAgICAgICAgIC4uLmVsLFxuICAgICAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IHZlcnNpb25NYXRjaFsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhMT0dfUFJFRklYLCBgVW5hYmxlIHRvIGdldCBKU09OIGRldmljZSBsaXN0OiAke2Vyci5zdGFja31gKTtcbiAgICBsb2cuZGVidWcoTE9HX1BSRUZJWCwgJ0ZhbGxpbmcgYmFjayB0byBtYW51YWwgcGFyc2luZycpO1xuICAgIGRldmljZXMgPSBhd2FpdCB0aGlzLmdldERldmljZXNCeVBhcnNpbmcocGxhdGZvcm0pO1xuICB9XG5cbiAgaWYgKCFmb3JTZGspIHtcbiAgICByZXR1cm4gZGV2aWNlcztcbiAgfVxuICAvLyBpZiBhIGBmb3JTZGtgIHdhcyBwYXNzZWQgaW4sIHJldHVybiBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIGxpc3RcbiAgaWYgKGRldmljZXNbZm9yU2RrXSkge1xuICAgIHJldHVybiBkZXZpY2VzW2ZvclNka107XG4gIH1cblxuICBsZXQgZXJyTXNnID0gYCcke2ZvclNka30nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IG9mIHNpbWN0bCBTREtzLmA7XG4gIGNvbnN0IGF2YWlsYWJsZVNES3MgPSBfLmtleXMoZGV2aWNlcyk7XG4gIGVyck1zZyArPSBhdmFpbGFibGVTREtzLmxlbmd0aFxuICAgID8gYCBPbmx5IHRoZSBmb2xsb3dpbmcgU2ltdWxhdG9yIFNESyB2ZXJzaW9ucyBhcmUgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtOiAke2F2YWlsYWJsZVNES3Muam9pbignLCAnKX1gXG4gICAgOiBgIE5vIFNpbXVsYXRvciBTREsgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbS4gUGxlYXNlIGluc3RhbGwgc29tZSB2aWEgWGNvZGUgcHJlZmVyZW5jZXMuYDtcbiAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbiB1c2luZyAtLWpzb24gZmxhZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbGF0Zm9ybVZlcnNpb24gLSBUaGUgcGxhdGZvcm0gdmVyc2lvbiBuYW1lLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJy5cbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29ycmVzcG9uZGluZyBydW50aW1lIG5hbWUgZm9yIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgICBwbGF0Zm9ybSB2ZXJzaW9uLlxuICovXG5jb21tYW5kcy5nZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uVmlhSnNvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb25WaWFKc29uIChcbiAgcGxhdGZvcm1WZXJzaW9uLCBwbGF0Zm9ybSA9ICdpT1MnKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsncnVudGltZXMnLCAnLS1qc29uJ10sXG4gIH0pO1xuICBmb3IgKGNvbnN0IHt2ZXJzaW9uLCBpZGVudGlmaWVyLCBuYW1lfSBvZiBKU09OLnBhcnNlKHN0ZG91dCkucnVudGltZXMpIHtcbiAgICBpZiAobm9ybWFsaXplVmVyc2lvbih2ZXJzaW9uKSA9PT0gbm9ybWFsaXplVmVyc2lvbihwbGF0Zm9ybVZlcnNpb24pXG4gICAgICAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChwbGF0Zm9ybS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHVzZSAtLWpzb24gZmxhZyB0byBwYXJzZSBwbGF0Zm9ybSB2ZXJzaW9uYCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxhdGZvcm1WZXJzaW9uIC0gVGhlIHBsYXRmb3JtIHZlcnNpb24gbmFtZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSAnMTAuMycuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIG5hbWUsIGZvciBleGFtcGxlICd3YXRjaE9TJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvcnJlc3BvbmRpbmcgcnVudGltZSBuYW1lIGZvciB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gdmVyc2lvbi5cbiAqL1xuY29tbWFuZHMuZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24gKFxuICBwbGF0Zm9ybVZlcnNpb24sIHBsYXRmb3JtID0gJ2lPUycpIHtcbiAgLy8gVHJ5IHdpdGggcGFyc2luZ1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgICAgYXJnczogWydydW50aW1lcyddLFxuICAgIH0pO1xuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvVXlralFaLzFcbiAgICBjb25zdCBydW50aW1lUmUgPVxuICAgICAgbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9XFxcXHMrKFxcXFxkK1xcXFwuXFxcXGQrKVxcXFxzK1xcXFwoKFxcXFxkK1xcXFwuXFxcXGQrXFxcXC4qXFxcXGQqKWAsICdpJyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcnVudGltZVJlLmV4ZWMobGluZSk7XG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gPT09IHBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gbWF0Y2hbMl07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgLy8gaWYgbm90aGluZyB3YXMgZm91bmQsIHBhc3MgcGxhdGZvcm0gdmVyc2lvbiBiYWNrXG4gIHJldHVybiBwbGF0Zm9ybVZlcnNpb247XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBkZXZpY2UgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IFhjb2RlIGluc3RhbGxhdGlvblxuICpcbiAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59IExpc3Qgb2YgdGhlIHR5cGVzIG9mIGRldmljZXMgYXZhaWxhYmxlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIGNvbW1hbmQgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VUeXBlcyAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnZGV2aWNldHlwZXMnLCAnLWonXSxcbiAgfSk7XG4gIC8qXG4gICAqIEpTT04gd2lsbCBiZSBsaWtlOlxuICAgKiAgIHtcbiAgICogICAgIFwiZGV2aWNldHlwZXNcIiA6IFtcbiAgICogICAgICAge1xuICAgKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNHNcIixcbiAgICogICAgICAgICBcImlkZW50aWZpZXJcIiA6IFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltRGV2aWNlVHlwZS5pUGhvbmUtNHNcIlxuICAgKiAgICAgICB9LFxuICAgKiAgICAgICAuLi5cbiAgICogICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZVR5cGVzID0gSlNPTi5wYXJzZShzdGRvdXQudHJpbSgpKTtcbiAgICByZXR1cm4gZGV2aWNlVHlwZXMuZGV2aWNldHlwZXMubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgbGlzdCBvZiBkZXZpY2UgdHlwZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcnVudGltZXMsIGRldmljZXR5cGVzLCBkZXZpY2VzIGFuZCBwYWlycyBhcyBPYmplY3RcbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IE9iamVjdCBjb250YWluaW5nIGRldmljZSB0eXBlcywgcnVudGltZXMgZGV2aWNlcyBhbmQgcGFpcnMuXG4gKiBUaGUgcmVzdWx0aW5nIEpTT04gd2lsbCBiZSBsaWtlOlxuICogICB7XG4gKiAgICAgXCJkZXZpY2V0eXBlc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcIm5hbWVcIiA6IFwiaVBob25lIDRzXCIsXG4gKiAgICAgICAgIFwiaWRlbnRpZmllclwiIDogXCJjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2VUeXBlLmlQaG9uZS00c1wiXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIF0sXG4gKiAgICAgXCJydW50aW1lc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcInZlcnNpb25cIiA6ICcxMy4wJyxcbiAqICAgICAgICAgXCJidW5kbGVQYXRoXCIgOiAnL0FwcGxpY2F0aW9ucy9YY29kZTExYmV0YTQuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZScsXG4gKiAgICAgICAgIFwiaXNBdmFpbGFibGVcIiA6IHRydWUsXG4gKiAgICAgICAgIFwibmFtZVwiIDogJ2lPUyAxMy4wJyxcbiAqICAgICAgICAgXCJpZGVudGlmaWVyXCIgOiAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCcsXG4gKiAgICAgICAgIFwiYnVpbGR2ZXJzaW9uXCIgOiAnMTdBNTUzNGQnXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIH0sXG4gKiAgICAgXCJkZXZpY2VzXCIgOlxuICogICAgICAge1xuICogICAgICAgICAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCc6IFsgW09iamVjdF0sIFtPYmplY3RdIF0gfSxcbiAqICAgICAgICAgLi4uXG4gKiAgICAgICB9LFxuICogICAgIFwicGFpcnNcIiA6IHt9IH1cbiAqXG4gKiAgIH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgY29tbWFuZCBmYWlsc1xuICovXG5jb21tYW5kcy5saXN0ID0gYXN5bmMgZnVuY3Rpb24gbGlzdCAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnLWonXSxcbiAgfSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0LnRyaW0oKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBzaW1jdGwgbGlzdDogJHtlLm1lc3NhZ2V9YCk7XG4gIH1c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
|
|
157
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldERldmljZXNCeVBhcnNpbmciLCJwbGF0Zm9ybSIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwiZGV2aWNlU2VjdGlvblJlIiwiXyIsImlzRW1wdHkiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaGVzIiwibWF0Y2giLCJwdXNoIiwiRXJyb3IiLCJsaW5lUmUiLCJkZXZpY2VzIiwic2RrIiwibGluZSIsInNwbGl0Iiwic2xpY2UiLCJpbmNsdWRlcyIsImxpbmVNYXRjaCIsIm5hbWUiLCJ1ZGlkIiwic3RhdGUiLCJnZXREZXZpY2VzIiwiZm9yU2RrIiwidmVyc2lvbk1hdGNoUmUiLCJzZGtOYW1lIiwiZW50cmllcyIsInRvUGFpcnMiLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwiU0lNX1JVTlRJTUVfTkFNRSIsInZlcnNpb25NYXRjaCIsImZpbHRlciIsImVsIiwiaXNVbmRlZmluZWQiLCJpc0F2YWlsYWJsZSIsIm1hcCIsImF2YWlsYWJpbGl0eSIsImVyciIsImxvZyIsImRlYnVnIiwiTE9HX1BSRUZJWCIsInN0YWNrIiwiZXJyTXNnIiwiYXZhaWxhYmxlU0RLcyIsImtleXMiLCJsZW5ndGgiLCJqb2luIiwiZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24iLCJwbGF0Zm9ybVZlcnNpb24iLCJ2ZXJzaW9uIiwiaWRlbnRpZmllciIsInJ1bnRpbWVzIiwibm9ybWFsaXplVmVyc2lvbiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24iLCJydW50aW1lUmUiLCJpZ24iLCJnZXREZXZpY2VUeXBlcyIsImRldmljZVR5cGVzIiwidHJpbSIsImRldmljZXR5cGVzIiwidHlwZSIsIm1lc3NhZ2UiLCJsaXN0IiwiZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTSU1fUlVOVElNRV9OQU1FLCBub3JtYWxpemVWZXJzaW9uIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgbG9nLCB7IExPR19QUkVGSVggfSBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgZGV2aWNlIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdWRpZCAtIFRoZSBkZXZpY2UgVURJRC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBjdXJyZW50IFNpbXVsYXRvciBzdGF0ZSwgZm9yIGV4YW1wbGUgJ2Jvb3RlZCcgb3IgJ3NodXRkb3duJy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZGsgLSBUaGUgU0RLIHZlcnNpb24sIGZvciBleGFtcGxlICcxMC4zJy5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIFNpbXVsYXRvciBkZXZpY2VzIHRvIHJlcHJlc2VudFxuICogaXQgYXMgY29udmVuaWVudCBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIG1hcHBpbmcuIEVhY2gga2V5IGlzIHBsYXRmb3JtIHZlcnNpb24sXG4gKiAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgYW5cbiAqICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgdGhlIG1hdGNoaW5nIHtAbGluayBEZXZpY2VJbmZvfSBpbnN0YW5jZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXNCeVBhcnNpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzQnlQYXJzaW5nIChwbGF0Zm9ybSkge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ2RldmljZXMnXSxcbiAgfSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGNvbnN0IGRldmljZVNlY3Rpb25SZSA9IF8uaXNFbXB0eShwbGF0Zm9ybSlcbiAgICA/IG5ldyBSZWdFeHAoYFxcXFwtXFxcXC1cXFxccysoXFxcXFMrKVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKVxuICAgIDogbmV3IFJlZ0V4cChgXFxcXC1cXFxcLVxcXFxzKyR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKTtcbiAgY29uc3QgbWF0Y2hlcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKChtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCkpKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG1hdGNoZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgbGluZVJlID0gLyhbXlxcc10uKykgXFwoKFxcdystLitcXHcrKVxcKSBcXCgoXFx3K1xccz9cXHcrKVxcKS87IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvbEc3bUs2LzNcbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgY29uc3QgZGV2aWNlcyA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBjb25zdCBzZGsgPSBwbGF0Zm9ybSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMF0uc3BsaXQoJ1xcbicpLnNsaWNlKDEpKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnKHVuYXZhaWxhYmxlLCAnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBjb25zdCBsaW5lTWF0Y2ggPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbGluZU1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGxpbmU6ICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICAgIHNkayxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IG1hdGNoWzFdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXZpY2VzO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbGlzdCBvZiBleGlzdGluZyBTaW11bGF0b3IgZGV2aWNlcyB0byByZXByZXNlbnRcbiAqIGl0IGFzIGNvbnZlbmllbnQgbWFwcGluZyBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGZvclNkayAtIFRoZSBzZGsgdmVyc2lvbixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBkZXZpY2VzIGxpc3Qgc2hvdWxkIGJlIHBhcnNlZCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtPYmplY3R8QXJyYXk8RGV2aWNlSW5mbz59IElmIF9mb3JTZGtfIGlzIHNldCB0aGVuIHRoZSBsaXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGRldmljZXMgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB0aGUgc2FtZSByZXN1bHQgYXMgZm9yIHtAbGluayBnZXREZXZpY2VzQnlQYXJzaW5nfVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZSBvciBpZiBubyBtYXRjaGluZ1xuICogICAgICAgICAgICAgICAgIHBsYXRmb3JtIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIHN5c3RlbS5cbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZXMgKGZvclNkaywgcGxhdGZvcm0pIHtcbiAgbGV0IGRldmljZXMgPSB7fTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICAgIGFyZ3M6IFsnZGV2aWNlcycsICctaiddLFxuICAgIH0pO1xuICAgIC8qIEpTT04gc2hvdWxkIGJlXG4gICAgICoge1xuICAgICAqICAgXCJkZXZpY2VzXCIgOiB7XG4gICAgICogICAgIFwiaU9TIDxzZGs+XCIgOiBbIC8vIG9yXG4gICAgICogICAgIFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtPHNkaz4gOiBbXG4gICAgICogICAgICAge1xuICAgICAqICAgICAgICAgXCJzdGF0ZVwiIDogXCJCb290ZWRcIixcbiAgICAgKiAgICAgICAgIFwiYXZhaWxhYmlsaXR5XCIgOiBcIihhdmFpbGFibGUpXCIsXG4gICAgICogICAgICAgICBcImlzQXZhaWxhYmxlXCIgOiB0cnVlLFxuICAgICAqICAgICAgICAgXCJuYW1lXCIgOiBcImlQaG9uZSA2XCIsXG4gICAgICogICAgICAgICBcInVkaWRcIiA6IFwiNzVFMzQxNDAtMThFOC00RDFBLTlGNDUtQUFDNzM1REY3NURGXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIF1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgY29uc3QgdmVyc2lvbk1hdGNoUmUgPSBfLmlzRW1wdHkocGxhdGZvcm0pXG4gICAgICA/IG5ldyBSZWdFeHAoYF4oW15cXFxccy1dKylbXFxcXHMtXShcXFxcUyspYCwgJ2knKVxuICAgICAgOiBuZXcgUmVnRXhwKGBeJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9W1xcXFxzLV0oXFxcXFMrKWAsICdpJyk7XG4gICAgZm9yIChsZXQgW3Nka05hbWUsIGVudHJpZXNdIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHN0ZG91dCkuZGV2aWNlcykpIHtcbiAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGEgbG9uZ2VyIG5hbWUsIHNvIHJlbW92ZSBpdFxuICAgICAgc2RrTmFtZSA9IHNka05hbWUucmVwbGFjZShTSU1fUlVOVElNRV9OQU1FLCAnJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSB2ZXJzaW9uTWF0Y2hSZS5leGVjKHNka05hbWUpO1xuICAgICAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBzZGsgY2FuIGhhdmUgZGFzaGVzIChgMTItMmApIG9yIGRvdHMgKGAxMi4xYClcbiAgICAgIGNvbnN0IHNkayA9IChwbGF0Zm9ybSA/IHZlcnNpb25NYXRjaFsxXSA6IHZlcnNpb25NYXRjaFsyXSkucmVwbGFjZSgnLScsICcuJyk7XG4gICAgICBkZXZpY2VzW3Nka10gPSBkZXZpY2VzW3Nka10gfHwgW107XG4gICAgICBkZXZpY2VzW3Nka10ucHVzaCguLi5lbnRyaWVzLmZpbHRlcigoZWwpID0+IF8uaXNVbmRlZmluZWQoZWwuaXNBdmFpbGFibGUpIHx8IGVsLmlzQXZhaWxhYmxlKVxuICAgICAgICAubWFwKChlbCkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbC5hdmFpbGFiaWxpdHk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNkayxcbiAgICAgICAgICAgIC4uLmVsLFxuICAgICAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IHZlcnNpb25NYXRjaFsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhMT0dfUFJFRklYLCBgVW5hYmxlIHRvIGdldCBKU09OIGRldmljZSBsaXN0OiAke2Vyci5zdGFja31gKTtcbiAgICBsb2cuZGVidWcoTE9HX1BSRUZJWCwgJ0ZhbGxpbmcgYmFjayB0byBtYW51YWwgcGFyc2luZycpO1xuICAgIGRldmljZXMgPSBhd2FpdCB0aGlzLmdldERldmljZXNCeVBhcnNpbmcocGxhdGZvcm0pO1xuICB9XG5cbiAgaWYgKCFmb3JTZGspIHtcbiAgICByZXR1cm4gZGV2aWNlcztcbiAgfVxuICAvLyBpZiBhIGBmb3JTZGtgIHdhcyBwYXNzZWQgaW4sIHJldHVybiBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIGxpc3RcbiAgaWYgKGRldmljZXNbZm9yU2RrXSkge1xuICAgIHJldHVybiBkZXZpY2VzW2ZvclNka107XG4gIH1cblxuICBsZXQgZXJyTXNnID0gYCcke2ZvclNka30nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IG9mIHNpbWN0bCBTREtzLmA7XG4gIGNvbnN0IGF2YWlsYWJsZVNES3MgPSBfLmtleXMoZGV2aWNlcyk7XG4gIGVyck1zZyArPSBhdmFpbGFibGVTREtzLmxlbmd0aFxuICAgID8gYCBPbmx5IHRoZSBmb2xsb3dpbmcgU2ltdWxhdG9yIFNESyB2ZXJzaW9ucyBhcmUgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtOiAke2F2YWlsYWJsZVNES3Muam9pbignLCAnKX1gXG4gICAgOiBgIE5vIFNpbXVsYXRvciBTREsgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbS4gUGxlYXNlIGluc3RhbGwgc29tZSB2aWEgWGNvZGUgcHJlZmVyZW5jZXMuYDtcbiAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbiB1c2luZyAtLWpzb24gZmxhZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbGF0Zm9ybVZlcnNpb24gLSBUaGUgcGxhdGZvcm0gdmVyc2lvbiBuYW1lLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJy5cbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29ycmVzcG9uZGluZyBydW50aW1lIG5hbWUgZm9yIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgICBwbGF0Zm9ybSB2ZXJzaW9uLlxuICovXG5jb21tYW5kcy5nZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uVmlhSnNvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb25WaWFKc29uIChcbiAgcGxhdGZvcm1WZXJzaW9uLCBwbGF0Zm9ybSA9ICdpT1MnKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsncnVudGltZXMnLCAnLS1qc29uJ10sXG4gIH0pO1xuICBmb3IgKGNvbnN0IHt2ZXJzaW9uLCBpZGVudGlmaWVyLCBuYW1lfSBvZiBKU09OLnBhcnNlKHN0ZG91dCkucnVudGltZXMpIHtcbiAgICBpZiAobm9ybWFsaXplVmVyc2lvbih2ZXJzaW9uKSA9PT0gbm9ybWFsaXplVmVyc2lvbihwbGF0Zm9ybVZlcnNpb24pXG4gICAgICAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChwbGF0Zm9ybS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHVzZSAtLWpzb24gZmxhZyB0byBwYXJzZSBwbGF0Zm9ybSB2ZXJzaW9uYCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxhdGZvcm1WZXJzaW9uIC0gVGhlIHBsYXRmb3JtIHZlcnNpb24gbmFtZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSAnMTAuMycuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIG5hbWUsIGZvciBleGFtcGxlICd3YXRjaE9TJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvcnJlc3BvbmRpbmcgcnVudGltZSBuYW1lIGZvciB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gdmVyc2lvbi5cbiAqL1xuY29tbWFuZHMuZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24gKFxuICBwbGF0Zm9ybVZlcnNpb24sIHBsYXRmb3JtID0gJ2lPUycpIHtcbiAgLy8gVHJ5IHdpdGggcGFyc2luZ1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgICAgYXJnczogWydydW50aW1lcyddLFxuICAgIH0pO1xuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvVXlralFaLzFcbiAgICBjb25zdCBydW50aW1lUmUgPVxuICAgICAgbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9XFxcXHMrKFxcXFxkK1xcXFwuXFxcXGQrKVxcXFxzK1xcXFwoKFxcXFxkK1xcXFwuXFxcXGQrXFxcXC4qXFxcXGQqKWAsICdpJyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcnVudGltZVJlLmV4ZWMobGluZSk7XG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gPT09IHBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gbWF0Y2hbMl07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgLy8gaWYgbm90aGluZyB3YXMgZm91bmQsIHBhc3MgcGxhdGZvcm0gdmVyc2lvbiBiYWNrXG4gIHJldHVybiBwbGF0Zm9ybVZlcnNpb247XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBkZXZpY2UgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IFhjb2RlIGluc3RhbGxhdGlvblxuICpcbiAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59IExpc3Qgb2YgdGhlIHR5cGVzIG9mIGRldmljZXMgYXZhaWxhYmxlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIGNvbW1hbmQgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VUeXBlcyAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnZGV2aWNldHlwZXMnLCAnLWonXSxcbiAgfSk7XG4gIC8qXG4gICAqIEpTT04gd2lsbCBiZSBsaWtlOlxuICAgKiAgIHtcbiAgICogICAgIFwiZGV2aWNldHlwZXNcIiA6IFtcbiAgICogICAgICAge1xuICAgKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNHNcIixcbiAgICogICAgICAgICBcImlkZW50aWZpZXJcIiA6IFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltRGV2aWNlVHlwZS5pUGhvbmUtNHNcIlxuICAgKiAgICAgICB9LFxuICAgKiAgICAgICAuLi5cbiAgICogICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZVR5cGVzID0gSlNPTi5wYXJzZShzdGRvdXQudHJpbSgpKTtcbiAgICByZXR1cm4gZGV2aWNlVHlwZXMuZGV2aWNldHlwZXMubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgbGlzdCBvZiBkZXZpY2UgdHlwZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcnVudGltZXMsIGRldmljZXR5cGVzLCBkZXZpY2VzIGFuZCBwYWlycyBhcyBPYmplY3RcbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IE9iamVjdCBjb250YWluaW5nIGRldmljZSB0eXBlcywgcnVudGltZXMgZGV2aWNlcyBhbmQgcGFpcnMuXG4gKiBUaGUgcmVzdWx0aW5nIEpTT04gd2lsbCBiZSBsaWtlOlxuICogICB7XG4gKiAgICAgXCJkZXZpY2V0eXBlc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcIm5hbWVcIiA6IFwiaVBob25lIDRzXCIsXG4gKiAgICAgICAgIFwiaWRlbnRpZmllclwiIDogXCJjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2VUeXBlLmlQaG9uZS00c1wiXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIF0sXG4gKiAgICAgXCJydW50aW1lc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcInZlcnNpb25cIiA6ICcxMy4wJyxcbiAqICAgICAgICAgXCJidW5kbGVQYXRoXCIgOiAnL0FwcGxpY2F0aW9ucy9YY29kZTExYmV0YTQuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZScsXG4gKiAgICAgICAgIFwiaXNBdmFpbGFibGVcIiA6IHRydWUsXG4gKiAgICAgICAgIFwibmFtZVwiIDogJ2lPUyAxMy4wJyxcbiAqICAgICAgICAgXCJpZGVudGlmaWVyXCIgOiAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCcsXG4gKiAgICAgICAgIFwiYnVpbGR2ZXJzaW9uXCIgOiAnMTdBNTUzNGQnXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIH0sXG4gKiAgICAgXCJkZXZpY2VzXCIgOlxuICogICAgICAge1xuICogICAgICAgICAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCc6IFsgW09iamVjdF0sIFtPYmplY3RdIF0gfSxcbiAqICAgICAgICAgLi4uXG4gKiAgICAgICB9LFxuICogICAgIFwicGFpcnNcIiA6IHt9IH1cbiAqXG4gKiAgIH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgY29tbWFuZCBmYWlsc1xuICovXG5jb21tYW5kcy5saXN0ID0gYXN5bmMgZnVuY3Rpb24gbGlzdCAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnLWonXSxcbiAgfSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0LnRyaW0oKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBzaW1jdGwgbGlzdDogJHtlLm1lc3NhZ2V9YCk7XG4gIH1c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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","names":["commands","getDevicesByParsing","platform","stdout","exec","args","deviceSectionRe","_","isEmpty","RegExp","escapeRegExp","matches","match","push","Error","lineRe","devices","sdk","line","split","slice","includes","lineMatch","name","udid","state","getDevices","forSdk","versionMatchRe","sdkName","entries","toPairs","JSON","parse","replace","SIM_RUNTIME_NAME","versionMatch","filter","el","isUndefined","isAvailable","map","availability","err","log","debug","LOG_PREFIX","stack","errMsg","availableSDKs","keys","length","join","getRuntimeForPlatformVersionViaJson","platformVersion","version","identifier","runtimes","normalizeVersion","toLowerCase","startsWith","getRuntimeForPlatformVersion","runtimeRe","ign","getDeviceTypes","deviceTypes","trim","devicetypes","type","message","list","e"],"sources":["../../../lib/subcommands/list.js"],"sourcesContent":["import _ from 'lodash';\nimport { SIM_RUNTIME_NAME, normalizeVersion } from '../helpers';\nimport log, { LOG_PREFIX } from '../logger';\n\n\nconst commands = {};\n\n/**\n * @typedef {Object} DeviceInfo\n * @property {string} name - The device name.\n * @property {string} udid - The device UDID.\n * @property {string} state - The current Simulator state, for example 'booted' or 'shutdown'.\n * @property {string} sdk - The SDK version, for example '10.3'.\n */\n\n/**\n * Parse the list of existing Simulator devices to represent\n * it as convenient mapping.\n *\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {Object} The resulting mapping. Each key is platform version,\n * for example '10.3' and the corresponding value is an\n * array of the matching {@link DeviceInfo} instances.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n */\ncommands.getDevicesByParsing = async function getDevicesByParsing (platform) {\n // get the list of devices\n const {stdout} = await this.exec('list', {\n args: ['devices'],\n });\n\n // expect to get a listing like\n // -- iOS 8.1 --\n // iPhone 4s (3CA6E7DD-220E-45E5-B716-1E992B3A429C) (Shutdown)\n // ...\n // -- iOS 8.2 --\n // iPhone 4s (A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E) (Shutdown)\n // ...\n // so, get the `-- iOS X.X --` line to find the sdk (X.X)\n // and the rest of the listing in order to later find the devices\n const deviceSectionRe = _.isEmpty(platform)\n ? new RegExp(`\\\\-\\\\-\\\\s+(\\\\S+)\\\\s+(\\\\S+)\\\\s+\\\\-\\\\-(\\\\n\\\\s{4}.+)*`, 'mgi')\n : new RegExp(`\\\\-\\\\-\\\\s+${_.escapeRegExp(platform)}\\\\s+(\\\\S+)\\\\s+\\\\-\\\\-(\\\\n\\\\s{4}.+)*`, 'mgi');\n const matches = [];\n let match;\n // make an entry for each sdk version\n while ((match = deviceSectionRe.exec(stdout))) {\n matches.push(match);\n }\n if (_.isEmpty(matches)) {\n throw new Error('Could not find device section');\n }\n\n const lineRe = /([^\\s].+) \\((\\w+-.+\\w+)\\) \\((\\w+\\s?\\w+)\\)/; // https://regex101.com/r/lG7mK6/3\n // get all the devices for each sdk\n const devices = {};\n for (match of matches) {\n const sdk = platform ? match[1] : match[2];\n devices[sdk] = devices[sdk] || [];\n // split the full match into lines and remove the first\n for (const line of match[0].split('\\n').slice(1)) {\n if (line.includes('(unavailable, ')) {\n continue;\n }\n // a line is something like\n // iPhone 4s (A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E) (Shutdown)\n // retrieve:\n // iPhone 4s\n // A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E\n // Shutdown\n const lineMatch = lineRe.exec(line);\n if (!lineMatch) {\n throw new Error(`Could not match line: ${line}`);\n }\n // save the whole thing as ab object in the list for this sdk\n devices[sdk].push({\n name: lineMatch[1],\n udid: lineMatch[2],\n state: lineMatch[3],\n sdk,\n platform: platform || match[1],\n });\n }\n }\n return devices;\n};\n\n/**\n * Parse the list of existing Simulator devices to represent\n * it as convenient mapping for the particular platform version.\n *\n * @param {?string} forSdk - The sdk version,\n * for which the devices list should be parsed,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {Object|Array<DeviceInfo>} If _forSdk_ is set then the list\n * of devices for the particular platform version.\n * Otherwise the same result as for {@link getDevicesByParsing}\n * function.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code or if no matching\n * platform version is found in the system.\n */\ncommands.getDevices = async function getDevices (forSdk, platform) {\n let devices = {};\n try {\n const {stdout} = await this.exec('list', {\n args: ['devices', '-j'],\n });\n /* JSON should be\n * {\n * \"devices\" : {\n * \"iOS <sdk>\" : [ // or\n * \"com.apple.CoreSimulator.SimRuntime.iOS-<sdk> : [\n * {\n * \"state\" : \"Booted\",\n * \"availability\" : \"(available)\",\n * \"isAvailable\" : true,\n * \"name\" : \"iPhone 6\",\n * \"udid\" : \"75E34140-18E8-4D1A-9F45-AAC735DF75DF\"\n * }\n * ]\n * }\n * }\n */\n const versionMatchRe = _.isEmpty(platform)\n ? new RegExp(`^([^\\\\s-]+)[\\\\s-](\\\\S+)`, 'i')\n : new RegExp(`^${_.escapeRegExp(platform)}[\\\\s-](\\\\S+)`, 'i');\n for (let [sdkName, entries] of _.toPairs(JSON.parse(stdout).devices)) {\n // there could be a longer name, so remove it\n sdkName = sdkName.replace(SIM_RUNTIME_NAME, '');\n const versionMatch = versionMatchRe.exec(sdkName);\n if (!versionMatch) {\n continue;\n }\n\n // the sdk can have dashes (`12-2`) or dots (`12.1`)\n const sdk = (platform ? versionMatch[1] : versionMatch[2]).replace('-', '.');\n devices[sdk] = devices[sdk] || [];\n devices[sdk].push(...entries.filter((el) => _.isUndefined(el.isAvailable) || el.isAvailable)\n .map((el) => {\n delete el.availability;\n return {\n sdk,\n ...el,\n platform: platform || versionMatch[1],\n };\n })\n );\n }\n } catch (err) {\n log.debug(LOG_PREFIX, `Unable to get JSON device list: ${err.stack}`);\n log.debug(LOG_PREFIX, 'Falling back to manual parsing');\n devices = await this.getDevicesByParsing(platform);\n }\n\n if (!forSdk) {\n return devices;\n }\n // if a `forSdk` was passed in, return only the corresponding list\n if (devices[forSdk]) {\n return devices[forSdk];\n }\n\n let errMsg = `'${forSdk}' does not exist in the list of simctl SDKs.`;\n const availableSDKs = _.keys(devices);\n errMsg += availableSDKs.length\n ? ` Only the following Simulator SDK versions are available on your system: ${availableSDKs.join(', ')}`\n : ` No Simulator SDK versions are available on your system. Please install some via Xcode preferences.`;\n throw new Error(errMsg);\n};\n\n/**\n * Get the runtime for the particular platform version using --json flag\n *\n * @param {string} platformVersion - The platform version name,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {string} The corresponding runtime name for the given\n * platform version.\n */\ncommands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatformVersionViaJson (\n platformVersion, platform = 'iOS') {\n const {stdout} = await this.exec('list', {\n args: ['runtimes', '--json'],\n });\n for (const {version, identifier, name} of JSON.parse(stdout).runtimes) {\n if (normalizeVersion(version) === normalizeVersion(platformVersion)\n && name.toLowerCase().startsWith(platform.toLowerCase())) {\n return identifier;\n }\n }\n throw new Error(`Could not use --json flag to parse platform version`);\n};\n\n/**\n * Get the runtime for the particular platform version.\n *\n * @param {string} platformVersion - The platform version name,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {string} The corresponding runtime name for the given\n * platform version.\n */\ncommands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVersion (\n platformVersion, platform = 'iOS') {\n // Try with parsing\n try {\n const {stdout} = await this.exec('list', {\n args: ['runtimes'],\n });\n // https://regex101.com/r/UykjQZ/1\n const runtimeRe =\n new RegExp(`${_.escapeRegExp(platform)}\\\\s+(\\\\d+\\\\.\\\\d+)\\\\s+\\\\((\\\\d+\\\\.\\\\d+\\\\.*\\\\d*)`, 'i');\n for (const line of stdout.split('\\n')) {\n const match = runtimeRe.exec(line);\n if (match && match[1] === platformVersion) {\n return match[2];\n }\n }\n } catch (ign) {}\n\n // if nothing was found, pass platform version back\n return platformVersion;\n};\n\n/**\n * Get the list of device types available in the current Xcode installation\n *\n * @return {Array<string>} List of the types of devices available\n * @throws {Error} If the corresponding simctl command fails\n */\ncommands.getDeviceTypes = async function getDeviceTypes () {\n const {stdout} = await this.exec('list', {\n args: ['devicetypes', '-j'],\n });\n /*\n * JSON will be like:\n * {\n * \"devicetypes\" : [\n * {\n * \"name\" : \"iPhone 4s\",\n * \"identifier\" : \"com.apple.CoreSimulator.SimDeviceType.iPhone-4s\"\n * },\n * ...\n * }\n */\n try {\n const deviceTypes = JSON.parse(stdout.trim());\n return deviceTypes.devicetypes.map((type) => type.name);\n } catch (err) {\n throw new Error(`Unable to get list of device types: ${err.message}`);\n }\n};\n\n/**\n * Get the full list of runtimes, devicetypes, devices and pairs as Object\n *\n * @return {Object} Object containing device types, runtimes devices and pairs.\n * The resulting JSON will be like:\n * {\n * \"devicetypes\" : [\n * {\n * \"name\" : \"iPhone 4s\",\n * \"identifier\" : \"com.apple.CoreSimulator.SimDeviceType.iPhone-4s\"\n * },\n * ...\n * ],\n * \"runtimes\" : [\n * {\n * \"version\" : '13.0',\n * \"bundlePath\" : '/Applications/Xcode11beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime',\n * \"isAvailable\" : true,\n * \"name\" : 'iOS 13.0',\n * \"identifier\" : 'com.apple.CoreSimulator.SimRuntime.iOS-13-0',\n * \"buildversion\" : '17A5534d'\n * },\n * ...\n * },\n * \"devices\" :\n * {\n * 'com.apple.CoreSimulator.SimRuntime.iOS-13-0': [ [Object], [Object] ] },\n * ...\n * },\n * \"pairs\" : {} }\n *\n * }\n * @throws {Error} If the corresponding simctl command fails\n */\ncommands.list = async function list () {\n const {stdout} = await this.exec('list', {\n args: ['-j'],\n });\n try {\n return JSON.parse(stdout.trim());\n } catch (e) {\n throw new Error(`Unable to parse simctl list: ${e.message}`);\n }\n};\n\nexport default commands;\n"],"mappings":"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"}
|
|
@@ -4,21 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
const commands = {};
|
|
11
|
-
|
|
12
9
|
function formatArg(name, value) {
|
|
13
10
|
const flt = parseFloat(value);
|
|
14
|
-
|
|
15
11
|
if (isNaN(flt)) {
|
|
16
12
|
throw new TypeError(`${name} must be a valid number, got '${value}' instead`);
|
|
17
13
|
}
|
|
18
|
-
|
|
19
14
|
return flt.toFixed(7);
|
|
20
15
|
}
|
|
21
|
-
|
|
22
16
|
commands.setLocation = async function setLocation(latitude, longitude) {
|
|
23
17
|
const lat = formatArg('latitude', latitude);
|
|
24
18
|
const lon = formatArg('longitude', longitude);
|
|
@@ -26,13 +20,11 @@ commands.setLocation = async function setLocation(latitude, longitude) {
|
|
|
26
20
|
args: [this.requireUdid('location'), 'set', `${lat},${lon}`]
|
|
27
21
|
});
|
|
28
22
|
};
|
|
29
|
-
|
|
30
23
|
commands.clearLocation = async function clearLocation() {
|
|
31
24
|
await this.exec('location', {
|
|
32
25
|
args: [this.requireUdid('location'), 'clear']
|
|
33
26
|
});
|
|
34
27
|
};
|
|
35
|
-
|
|
36
28
|
var _default = commands;
|
|
37
29
|
exports.default = _default;
|
|
38
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImZvcm1hdEFyZyIsIm5hbWUiLCJ2YWx1ZSIsImZsdCIsInBhcnNlRmxvYXQiLCJpc05hTiIsIlR5cGVFcnJvciIsInRvRml4ZWQiLCJzZXRMb2NhdGlvbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwibGF0IiwibG9uIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImNsZWFyTG9jYXRpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvbG9jYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBGb3JtYXRzIHRoZSBnaXZlbiBsb2NhdGlvbiBhcmd1bWVudCBmb3Igc2ltY3RsIHVzYWdlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQXJndW1lbnQgbmFtZVxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZSBMb2NhdGlvbiBhcmd1bWVudCB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ30gRm9ybWF0dGVkIHZhbHVlLCBmb3IgZXhhbXBsZSAtNzMuNzY4MjU0XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEFyZyAobmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgZmx0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gIGlmIChpc05hTihmbHQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgbnVtYmVyLCBnb3QgJyR7dmFsdWV9JyBpbnN0ZWFkYCk7XG4gIH1cbiAgcmV0dXJuIGZsdC50b0ZpeGVkKDcpO1xufVxuXG4vKipcbiAqIFNldCB0aGUgU2ltdWxhdG9yIGxvY2F0aW9uIHRvIGEgc3BlY2lmaWMgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZS5cbiAqIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSBYY29kZSAxNC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxhdGl0dWRlIExvY2F0aW9uIGxhdGl0dWRlIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxvbmdpdHVkZSBMb2NhdGlvbiBsb25naXR1ZGUgdmFsdWVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZS5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgbm90IGEgdmFsaWQgdmFsdWUuXG4gKi9cbmNvbW1hbmRzLnNldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb24gKGxhdGl0dWRlLCBsb25naXR1ZGUpIHtcbiAgY29uc3QgbGF0ID0gZm9ybWF0QXJnKCdsYXRpdHVkZScsIGxhdGl0dWRlKTtcbiAgY29uc3QgbG9uID0gZm9ybWF0QXJnKCdsb25naXR1ZGUnLCBsb25naXR1ZGUpO1xuICBhd2FpdCB0aGlzLmV4ZWMoJ2xvY2F0aW9uJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsb2NhdGlvbicpLCAnc2V0JywgYCR7bGF0fSwke2xvbn1gXSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIFN0b3AgYW55IHJ1bm5pbmcgc2NlbmFyaW8gYW5kIGNsZWFyIGFueSBzaW11bGF0ZWQgbG9jYXRpb24uXG4gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBhdmFpbGFibGUgc2luY2UgWGNvZGUgMTQuXG4gKi9cbmNvbW1hbmRzLmNsZWFyTG9jYXRpb24gPSBhc3luYyBmdW5jdGlvbiBjbGVhckxvY2F0aW9uICgpIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdsb2NhdGlvbicsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgnbG9jYXRpb24nKSwgJ2NsZWFyJ10sXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBU25CLFNBQVNDLFNBQVMsQ0FBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUU7RUFDL0IsTUFBTUMsR0FBRyxHQUFHQyxVQUFVLENBQUNGLEtBQUssQ0FBQztFQUM3QixJQUFJRyxLQUFLLENBQUNGLEdBQUcsQ0FBQyxFQUFFO0lBQ2QsTUFBTSxJQUFJRyxTQUFTLENBQUUsR0FBRUwsSUFBSyxpQ0FBZ0NDLEtBQU0sV0FBVSxDQUFDO0VBQy9FO0VBQ0EsT0FBT0MsR0FBRyxDQUFDSSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCO0FBWUFSLFFBQVEsQ0FBQ1MsV0FBVyxHQUFHLGVBQWVBLFdBQVcsQ0FBRUMsUUFBUSxFQUFFQyxTQUFTLEVBQUU7RUFDdEUsTUFBTUMsR0FBRyxHQUFHWCxTQUFTLENBQUMsVUFBVSxFQUFFUyxRQUFRLENBQUM7RUFDM0MsTUFBTUcsR0FBRyxHQUFHWixTQUFTLENBQUMsV0FBVyxFQUFFVSxTQUFTLENBQUM7RUFDN0MsTUFBTSxJQUFJLENBQUNHLElBQUksQ0FBQyxVQUFVLEVBQUU7SUFDMUJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRyxHQUFFSixHQUFJLElBQUdDLEdBQUksRUFBQztFQUM3RCxDQUFDLENBQUM7QUFDSixDQUFDO0FBTURiLFFBQVEsQ0FBQ2lCLGFBQWEsR0FBRyxlQUFlQSxhQUFhLEdBQUk7RUFDdkQsTUFBTSxJQUFJLENBQUNILElBQUksQ0FBQyxVQUFVLEVBQUU7SUFDMUJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU87RUFDOUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLGVBRWFoQixRQUFRO0FBQUEifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"location.js","names":["commands","formatArg","name","value","flt","parseFloat","isNaN","TypeError","toFixed","setLocation","latitude","longitude","lat","lon","exec","args","requireUdid","clearLocation"],"sources":["../../../lib/subcommands/location.js"],"sourcesContent":["const commands = {};\n\n/**\n * Formats the given location argument for simctl usage\n *\n * @param {string} name Argument name\n * @param {string|number} value Location argument value\n * @returns {string} Formatted value, for example -73.768254\n */\nfunction formatArg (name, value) {\n const flt = parseFloat(value);\n if (isNaN(flt)) {\n throw new TypeError(`${name} must be a valid number, got '${value}' instead`);\n }\n return flt.toFixed(7);\n}\n\n/**\n * Set the Simulator location to a specific latitude and longitude.\n * This functionality is only available since Xcode 14.\n *\n * @param {string|number} latitude Location latitude value\n * @param {string|number} longitude Location longitude value\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {TypeError} If any of the arguments is not a valid value.\n */\ncommands.setLocation = async function setLocation (latitude, longitude) {\n const lat = formatArg('latitude', latitude);\n const lon = formatArg('longitude', longitude);\n await this.exec('location', {\n args: [this.requireUdid('location'), 'set', `${lat},${lon}`],\n });\n};\n\n/**\n * Stop any running scenario and clear any simulated location.\n * This functionality is only available since Xcode 14.\n */\ncommands.clearLocation = async function clearLocation () {\n await this.exec('location', {\n args: [this.requireUdid('location'), 'clear'],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AASnB,SAASC,SAAS,CAAEC,IAAI,EAAEC,KAAK,EAAE;EAC/B,MAAMC,GAAG,GAAGC,UAAU,CAACF,KAAK,CAAC;EAC7B,IAAIG,KAAK,CAACF,GAAG,CAAC,EAAE;IACd,MAAM,IAAIG,SAAS,CAAE,GAAEL,IAAK,iCAAgCC,KAAM,WAAU,CAAC;EAC/E;EACA,OAAOC,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC;AACvB;AAYAR,QAAQ,CAACS,WAAW,GAAG,eAAeA,WAAW,CAAEC,QAAQ,EAAEC,SAAS,EAAE;EACtE,MAAMC,GAAG,GAAGX,SAAS,CAAC,UAAU,EAAES,QAAQ,CAAC;EAC3C,MAAMG,GAAG,GAAGZ,SAAS,CAAC,WAAW,EAAEU,SAAS,CAAC;EAC7C,MAAM,IAAI,CAACG,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAG,GAAEJ,GAAI,IAAGC,GAAI,EAAC;EAC7D,CAAC,CAAC;AACJ,CAAC;AAMDb,QAAQ,CAACiB,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAM,IAAI,CAACH,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC,EAAE,OAAO;EAC9C,CAAC,CAAC;AACJ,CAAC;AAAC,eAEahB,QAAQ;AAAA"}
|
|
@@ -4,17 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
const commands = {};
|
|
11
|
-
|
|
12
9
|
commands.openUrl = async function openUrl(url) {
|
|
13
10
|
return await this.exec('openurl', {
|
|
14
11
|
args: [this.requireUdid('openurl'), url]
|
|
15
12
|
});
|
|
16
13
|
};
|
|
17
|
-
|
|
18
14
|
var _default = commands;
|
|
19
15
|
exports.default = _default;
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsIm9wZW5VcmwiLCJ1cmwiLCJleGVjIiwiYXJncyIsInJlcXVpcmVVZGlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL29wZW51cmwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBPcGVuIFVSTCBzY2hlbWUgb24gU2ltdWxhdG9yLiBpT1Mgd2lsbCBhdXRvbWF0aWNhbGx5IHRyeVxuICogdG8gZmluZCBhIG1hdGNoaW5nIGFwcGxpY2F0aW9uLCB3aGljaCBzdXBwb3J0cyB0aGUgZ2l2ZW4gc2NoZW1lLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgc2NoZW1lIHRvIG9wZW4sIGZvciBleGFtcGxlIGh0dHA6Ly9hcHBpb20uaW9cbiAqICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIG9wZW5lZCBieSB0aGUgYnVpbHQtaW4gbW9iaWxlIGJyb3dzZXIuXG4gKiBAcmV0dXJuIHtFeGVjUmVzdWx0fSBDb21tYW5kIGV4ZWN1dGlvbiByZXN1bHQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5vcGVuVXJsID0gYXN5bmMgZnVuY3Rpb24gb3BlblVybCAodXJsKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmV4ZWMoJ29wZW51cmwnLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ29wZW51cmwnKSwgdXJsXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFjbkJBLFFBQVEsQ0FBQ0MsT0FBTyxHQUFHLGVBQWVBLE9BQU8sQ0FBRUMsR0FBRyxFQUFFO0VBQzlDLE9BQU8sTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxTQUFTLEVBQUU7SUFDaENDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFSCxHQUFHO0VBQ3pDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFBQyxlQUVhRixRQUFRO0FBQUEifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openurl.js","names":["commands","openUrl","url","exec","args","requireUdid"],"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,OAAO,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,eAEaF,QAAQ;AAAA"}
|
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
const commands = {};
|
|
11
|
-
|
|
12
9
|
commands.setPasteboard = async function setPasteboard(content, encoding = 'utf8') {
|
|
13
10
|
const pbCopySubprocess = await this.exec('pbcopy', {
|
|
14
11
|
args: [this.requireUdid('pbcopy')],
|
|
@@ -22,7 +19,6 @@ commands.setPasteboard = async function setPasteboard(content, encoding = 'utf8'
|
|
|
22
19
|
stdin.end();
|
|
23
20
|
await exitCodeVerifier;
|
|
24
21
|
};
|
|
25
|
-
|
|
26
22
|
var _default = commands;
|
|
27
23
|
exports.default = _default;
|
|
28
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInNldFBhc3RlYm9hcmQiLCJjb250ZW50IiwiZW5jb2RpbmciLCJwYkNvcHlTdWJwcm9jZXNzIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImFzeW5jaHJvbm91cyIsInN0YXJ0IiwiZXhpdENvZGVWZXJpZmllciIsImpvaW4iLCJzdGRpbiIsInByb2MiLCJzZXRFbmNvZGluZyIsIndyaXRlIiwiZW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL3BiY29weS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFNldCB0aGUgY29udGVudCBvZiBTaW11bGF0b3IgcGFzdGVib2FyZC5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBzaW5jZSBYY29kZSBTREsgOC4xXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCAtIFRoZSBhY3R1YWwgc3RyaW5nIGNvbnRlbnQgdG8gYmUgc2V0LlxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nIFt1dGYnXSAtIFRoZSBlbmNvZGluZyBvZiB0aGUgZ2l2ZW4gcGFzdGVib2FyZCBjb250ZW50LlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURi04IGJ5IGRlZmF1bHQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5zZXRQYXN0ZWJvYXJkID0gYXN5bmMgZnVuY3Rpb24gc2V0UGFzdGVib2FyZCAoY29udGVudCwgZW5jb2RpbmcgPSAndXRmOCcpIHtcbiAgY29uc3QgcGJDb3B5U3VicHJvY2VzcyA9IGF3YWl0IHRoaXMuZXhlYygncGJjb3B5Jywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdwYmNvcHknKV0sXG4gICAgYXN5bmNocm9ub3VzOiB0cnVlLFxuICB9KTtcbiAgYXdhaXQgcGJDb3B5U3VicHJvY2Vzcy5zdGFydCgwKTtcbiAgY29uc3QgZXhpdENvZGVWZXJpZmllciA9IHBiQ29weVN1YnByb2Nlc3Muam9pbigpO1xuICBjb25zdCBzdGRpbiA9IHBiQ29weVN1YnByb2Nlc3MucHJvYy5zdGRpbjtcbiAgc3RkaW4uc2V0RW5jb2RpbmcoZW5jb2RpbmcpO1xuICBzdGRpbi53cml0ZShjb250ZW50KTtcbiAgc3RkaW4uZW5kKCk7XG4gIGF3YWl0IGV4aXRDb2RlVmVyaWZpZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFjbkJBLFFBQVEsQ0FBQ0MsYUFBYSxHQUFHLGVBQWVBLGFBQWEsQ0FBRUMsT0FBTyxFQUFFQyxRQUFRLEdBQUcsTUFBTSxFQUFFO0VBQ2pGLE1BQU1DLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsUUFBUSxFQUFFO0lBQ2pEQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQ0MsWUFBWSxFQUFFO0VBQ2hCLENBQUMsQ0FBQztFQUNGLE1BQU1KLGdCQUFnQixDQUFDSyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQy9CLE1BQU1DLGdCQUFnQixHQUFHTixnQkFBZ0IsQ0FBQ08sSUFBSSxFQUFFO0VBQ2hELE1BQU1DLEtBQUssR0FBR1IsZ0JBQWdCLENBQUNTLElBQUksQ0FBQ0QsS0FBSztFQUN6Q0EsS0FBSyxDQUFDRSxXQUFXLENBQUNYLFFBQVEsQ0FBQztFQUMzQlMsS0FBSyxDQUFDRyxLQUFLLENBQUNiLE9BQU8sQ0FBQztFQUNwQlUsS0FBSyxDQUFDSSxHQUFHLEVBQUU7RUFDWCxNQUFNTixnQkFBZ0I7QUFDeEIsQ0FBQztBQUFDLGVBRWFWLFFBQVE7QUFBQSJ9
|
|
@@ -0,0 +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"],"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 [utf'] - 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,aAAa,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,EAAE;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,EAAE;EACX,MAAMN,gBAAgB;AACxB,CAAC;AAAC,eAEaV,QAAQ;AAAA"}
|
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
const commands = {};
|
|
11
|
-
|
|
12
9
|
commands.getPasteboard = async function getPasteboard(encoding = 'utf8') {
|
|
13
10
|
const {
|
|
14
11
|
stdout
|
|
@@ -18,7 +15,6 @@ commands.getPasteboard = async function getPasteboard(encoding = 'utf8') {
|
|
|
18
15
|
});
|
|
19
16
|
return stdout;
|
|
20
17
|
};
|
|
21
|
-
|
|
22
18
|
var _default = commands;
|
|
23
19
|
exports.default = _default;
|
|
24
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldFBhc3RlYm9hcmQiLCJlbmNvZGluZyIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwicmVxdWlyZVVkaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvcGJwYXN0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEdldCB0aGUgY29udGVudCBvZiBTaW11bGF0b3IgcGFzdGVib2FyZC5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBzaW5jZSBYY29kZSA4LjEgU0RLXG4gKiBAcGFyYW0ge3N0cmluZ30gZW5jb2RpbmcgWyd1dGYtOCddIC0gVGhlIGVuY29kaW5nIG9mIHRoZSByZXR1cm5lZCBwYXN0ZWJvYXJkIGNvbnRlbnQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGLTggYnkgZGVmYXVsdC5cbiAqIEByZXR1cm4ge3N0cmluZ30gQ3VycmVudCBjb250ZW50IG9mIFNpbXVsYXRvciBwYXN0ZWJvYXJkIG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLmdldFBhc3RlYm9hcmQgPSBhc3luYyBmdW5jdGlvbiBnZXRQYXN0ZWJvYXJkIChlbmNvZGluZyA9ICd1dGY4Jykge1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygncGJwYXN0ZScsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgncGJwYXN0ZScpXSxcbiAgICBlbmNvZGluZyxcbiAgfSk7XG4gIHJldHVybiBzdGRvdXQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFjbkJBLFFBQVEsQ0FBQ0MsYUFBYSxHQUFHLGVBQWVBLGFBQWEsQ0FBRUMsUUFBUSxHQUFHLE1BQU0sRUFBRTtFQUN4RSxNQUFNO0lBQUNDO0VBQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQzFDQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQ0o7RUFDRixDQUFDLENBQUM7RUFDRixPQUFPQyxNQUFNO0FBQ2YsQ0FBQztBQUFDLGVBRWFILFFBQVE7QUFBQSJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbpaste.js","names":["commands","getPasteboard","encoding","stdout","exec","args","requireUdid"],"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,aAAa,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,eAEaH,QAAQ;AAAA"}
|
|
@@ -4,29 +4,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
const commands = {};
|
|
11
|
-
|
|
12
9
|
commands.grantPermission = async function grantPermission(bundleId, perm) {
|
|
13
10
|
await this.exec('privacy', {
|
|
14
11
|
args: [this.requireUdid('privacy grant'), 'grant', perm, bundleId]
|
|
15
12
|
});
|
|
16
13
|
};
|
|
17
|
-
|
|
18
14
|
commands.revokePermission = async function revokePermission(bundleId, perm) {
|
|
19
15
|
await this.exec('privacy', {
|
|
20
16
|
args: [this.requireUdid('privacy revoke'), 'revoke', perm, bundleId]
|
|
21
17
|
});
|
|
22
18
|
};
|
|
23
|
-
|
|
24
19
|
commands.resetPermission = async function resetPermission(bundleId, perm) {
|
|
25
20
|
await this.exec('privacy', {
|
|
26
21
|
args: [this.requireUdid('private reset'), 'reset', perm, bundleId]
|
|
27
22
|
});
|
|
28
23
|
};
|
|
29
|
-
|
|
30
24
|
var _default = commands;
|
|
31
25
|
exports.default = _default;
|
|
32
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdyYW50UGVybWlzc2lvbiIsImJ1bmRsZUlkIiwicGVybSIsImV4ZWMiLCJhcmdzIiwicmVxdWlyZVVkaWQiLCJyZXZva2VQZXJtaXNzaW9uIiwicmVzZXRQZXJtaXNzaW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL3ByaXZhY3kuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBHcmFudHMgdGhlIGdpdmVuIHBlcm1pc3Npb24gb24gdGhlIGFwcCB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllclxuICpcbiAqIEBzaW5jZSBYY29kZSAxMS40IFNES1xuICogQHBhcmFtIHtzdHJpbmd9IGJ1bmRsZUlkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBhcHBsaWNhdGlvbiB3aG9zZVxuICogcHJpdmFjeSBzZXR0aW5ncyBhcmUgZ29pbmcgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtzdHJpbmd9IHBlcm0gb25lIG9mIHBvc3NpYmxlIHBlcm1pc3Npb24gdmFsdWVzOlxuICogLSBhbGw6IEFwcGx5IHRoZSBhY3Rpb24gdG8gYWxsIHNlcnZpY2VzLlxuICogLSBjYWxlbmRhcjogQWxsb3cgYWNjZXNzIHRvIGNhbGVuZGFyLlxuICogLSBjb250YWN0cy1saW1pdGVkOiBBbGxvdyBhY2Nlc3MgdG8gYmFzaWMgY29udGFjdCBpbmZvLlxuICogLSBjb250YWN0czogQWxsb3cgYWNjZXNzIHRvIGZ1bGwgY29udGFjdCBkZXRhaWxzLlxuICogLSBsb2NhdGlvbjogQWxsb3cgYWNjZXNzIHRvIGxvY2F0aW9uIHNlcnZpY2VzIHdoZW4gYXBwIGlzIGluIHVzZS5cbiAqIC0gbG9jYXRpb24tYWx3YXlzOiBBbGxvdyBhY2Nlc3MgdG8gbG9jYXRpb24gc2VydmljZXMgYXQgYWxsIHRpbWVzLlxuICogLSBwaG90b3MtYWRkOiBBbGxvdyBhZGRpbmcgcGhvdG9zIHRvIHRoZSBwaG90byBsaWJyYXJ5LlxuICogLSBwaG90b3M6IEFsbG93IGZ1bGwgYWNjZXNzIHRvIHRoZSBwaG90byBsaWJyYXJ5LlxuICogLSBtZWRpYS1saWJyYXJ5OiBBbGxvdyBhY2Nlc3MgdG8gdGhlIG1lZGlhIGxpYnJhcnkuXG4gKiAtIG1pY3JvcGhvbmU6IEFsbG93IGFjY2VzcyB0byBhdWRpbyBpbnB1dC5cbiAqIC0gbW90aW9uOiBBbGxvdyBhY2Nlc3MgdG8gbW90aW9uIGFuZCBmaXRuZXNzIGRhdGEuXG4gKiAtIHJlbWluZGVyczogQWxsb3cgYWNjZXNzIHRvIHJlbWluZGVycy5cbiAqIC0gc2lyaTogQWxsb3cgdXNlIG9mIHRoZSBhcHAgd2l0aCBTaXJpLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBncmFudGluZyB0aGUgcGVybWlzc2lvblxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuZ3JhbnRQZXJtaXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gZ3JhbnRQZXJtaXNzaW9uIChidW5kbGVJZCwgcGVybSkge1xuICBhd2FpdCB0aGlzLmV4ZWMoJ3ByaXZhY3knLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ3ByaXZhY3kgZ3JhbnQnKSwgJ2dyYW50JywgcGVybSwgYnVuZGxlSWRdLFxuICB9KTtcbn07XG5cbi8qKlxuICogUmV2b2tlcyB0aGUgZ2l2ZW4gcGVybWlzc2lvbiBvbiB0aGUgYXBwIHdpdGggdGhlIGdpdmVuIGJ1bmRsZSBpZGVudGlmaWVyXG4gKiBhZnRlciBpdCBoYXMgYmVlbiBncmFudGVkXG4gKlxuICogQHNpbmNlIFhjb2RlIDExLjQgU0RLXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGFwcGxpY2F0aW9uIHdob3NlXG4gKiBwcml2YWN5IHNldHRpbmdzIGFyZSBnb2luZyB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gcGVybSBvbmUgb2YgcG9zc2libGUgcGVybWlzc2lvbiB2YWx1ZXMgKHNlZSBgZ3JhbnRQZXJtaXNzaW9uYClcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgY3VycmVudCBTREsgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb21tYW5kXG4gKiBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcmV2b2tpbmcgdGhlIHBlcm1pc3Npb25cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLnJldm9rZVBlcm1pc3Npb24gPSBhc3luYyBmdW5jdGlvbiByZXZva2VQZXJtaXNzaW9uIChidW5kbGVJZCwgcGVybSkge1xuICBhd2FpdCB0aGlzLmV4ZWMoJ3ByaXZhY3knLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ3ByaXZhY3kgcmV2b2tlJyksICdyZXZva2UnLCBwZXJtLCBidW5kbGVJZF0sXG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXNldHMgdGhlIGdpdmVuIHBlcm1pc3Npb24gb24gdGhlIGFwcCB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllclxuICogdG8gaXRzIGRlZmF1bHQgc3RhdGVcbiAqXG4gKiBAc2luY2UgWGNvZGUgMTEuNCBTREtcbiAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCB0aGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24gd2hvc2VcbiAqIHByaXZhY3kgc2V0dGluZ3MgYXJlIGdvaW5nIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBwZXJtIG9uZSBvZiBwb3NzaWJsZSBwZXJtaXNzaW9uIHZhbHVlcyAoc2VlIGBncmFudFBlcm1pc3Npb25gKVxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZXNldHRpbmcgdGhlIHBlcm1pc3Npb25cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLnJlc2V0UGVybWlzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIHJlc2V0UGVybWlzc2lvbiAoYnVuZGxlSWQsIHBlcm0pIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdwcml2YWN5Jywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdwcml2YXRlIHJlc2V0JyksICdyZXNldCcsIHBlcm0sIGJ1bmRsZUlkXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUEwQm5CQSxRQUFRLENBQUNDLGVBQWUsR0FBRyxlQUFlQSxlQUFlLENBQUVDLFFBQVEsRUFBRUMsSUFBSSxFQUFFO0VBQ3pFLE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQ3pCQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUVILElBQUksRUFBRUQsUUFBUTtFQUNuRSxDQUFDLENBQUM7QUFDSixDQUFDO0FBY0RGLFFBQVEsQ0FBQ08sZ0JBQWdCLEdBQUcsZUFBZUEsZ0JBQWdCLENBQUVMLFFBQVEsRUFBRUMsSUFBSSxFQUFFO0VBQzNFLE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQ3pCQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsRUFBRUgsSUFBSSxFQUFFRCxRQUFRO0VBQ3JFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFjREYsUUFBUSxDQUFDUSxlQUFlLEdBQUcsZUFBZUEsZUFBZSxDQUFFTixRQUFRLEVBQUVDLElBQUksRUFBRTtFQUN6RSxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFNBQVMsRUFBRTtJQUN6QkMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFSCxJQUFJLEVBQUVELFFBQVE7RUFDbkUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLGVBRWFGLFFBQVE7QUFBQSJ9
|