"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("source-map-support/register"); var _logger = _interopRequireDefault(require("../logger")); var _asyncbox = require("asyncbox"); const commands = {}; commands.startBootMonitor = async function startBootMonitor(opts = {}) { const { timeout = 240000, onWaitingDataMigration, onWaitingSystemApp, onFinished, onError, shouldPreboot } = opts; const udid = this.requireUdid('bootstatus'); let status = ''; let isBootingFinished = false; let error = null; let timeoutHandler = null; const args = [udid]; if (shouldPreboot) { args.push('-b'); } const bootMonitor = await this.exec('bootstatus', { args, asynchronous: true }); bootMonitor.on('output', (stdout, stderr) => { status += stdout || stderr; if (stdout) { if (stdout.includes('Waiting on Data Migration') && onWaitingDataMigration) { onWaitingDataMigration(); } else if (stdout.includes('Waiting on System App') && onWaitingSystemApp) { onWaitingSystemApp(); } } }); bootMonitor.on('exit', (code, signal) => { if (timeoutHandler) { clearTimeout(timeoutHandler); } if (code === 0) { if (onFinished) { onFinished(); } isBootingFinished = true; } else { status = status || signal; error = new Error(status); if (onError) { onError(error); } } }); await bootMonitor.start(0); const stopMonitor = async () => { if (bootMonitor.isRunning) { try { await bootMonitor.stop(); } catch (e) { _logger.default.warn(e.message); } } }; const start = process.hrtime(); if (onFinished) { timeoutHandler = setTimeout(stopMonitor, timeout); } else { try { await (0, _asyncbox.waitForCondition)(() => { if (error) { throw error; } return isBootingFinished; }, { waitMs: timeout, intervalMs: 500 }); } catch (err) { await stopMonitor(); const [seconds] = process.hrtime(start); throw new Error(`The simulator ${udid} has failed to finish booting after ${seconds}s. ` + `Original status: ${status}`); } } return bootMonitor; }; var _default = commands; exports.default = _default;require('source-map-support').install(); //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zdWJjb21tYW5kcy9ib290c3RhdHVzLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwic3RhcnRCb290TW9uaXRvciIsIm9wdHMiLCJ0aW1lb3V0Iiwib25XYWl0aW5nRGF0YU1pZ3JhdGlvbiIsIm9uV2FpdGluZ1N5c3RlbUFwcCIsIm9uRmluaXNoZWQiLCJvbkVycm9yIiwic2hvdWxkUHJlYm9vdCIsInVkaWQiLCJyZXF1aXJlVWRpZCIsInN0YXR1cyIsImlzQm9vdGluZ0ZpbmlzaGVkIiwiZXJyb3IiLCJ0aW1lb3V0SGFuZGxlciIsImFyZ3MiLCJwdXNoIiwiYm9vdE1vbml0b3IiLCJleGVjIiwiYXN5bmNocm9ub3VzIiwib24iLCJzdGRvdXQiLCJzdGRlcnIiLCJpbmNsdWRlcyIsImNvZGUiLCJzaWduYWwiLCJjbGVhclRpbWVvdXQiLCJFcnJvciIsInN0YXJ0Iiwic3RvcE1vbml0b3IiLCJpc1J1bm5pbmciLCJzdG9wIiwiZSIsImxvZyIsIndhcm4iLCJtZXNzYWdlIiwicHJvY2VzcyIsImhydGltZSIsInNldFRpbWVvdXQiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwiZXJyIiwic2Vjb25kcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBMEJBQSxRQUFRLENBQUNDLGdCQUFULEdBQTRCLGVBQWVBLGdCQUFmLENBQWlDQyxJQUFJLEdBQUcsRUFBeEMsRUFBNEM7QUFDdEUsUUFBTTtBQUNKQyxJQUFBQSxPQUFPLEdBQUcsTUFETjtBQUVKQyxJQUFBQSxzQkFGSTtBQUdKQyxJQUFBQSxrQkFISTtBQUlKQyxJQUFBQSxVQUpJO0FBS0pDLElBQUFBLE9BTEk7QUFNSkMsSUFBQUE7QUFOSSxNQU9GTixJQVBKO0FBUUEsUUFBTU8sSUFBSSxHQUFHLEtBQUtDLFdBQUwsQ0FBaUIsWUFBakIsQ0FBYjtBQUVBLE1BQUlDLE1BQU0sR0FBRyxFQUFiO0FBQ0EsTUFBSUMsaUJBQWlCLEdB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R0Q7QUFDRjs7QUFDRCxTQUFPTSxXQUFQO0FBQ0QsQ0FoRkQ7O2VBa0ZlakIsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBCb290TW9uaXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdGltZW91dCBbMjQwMDAwXSAtIFNpbXVsYXRvciBib290aW5nIHRpbWVvdXQgaW4gbXMuXG4gKiBAcHJvcGVydHkgez9GdW5jdGlvbn0gb25XYWl0aW5nRGF0YU1pZ3JhdGlvbiAtIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiBkYXRhIG1pZ3JhdGlvbiBzdGFnZSBzdGFydHMuXG4gKiBAcHJvcGVydHkgez9GdW5jdGlvbn0gb25XYWl0aW5nU3lzdGVtQXBwIC0gVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHN5c3RlbSBhcHAgd2FpdCBzdGFnZSBzdGFydHMuXG4gKiBAcHJvcGVydHkgez9GdW5jdGlvbn0gb25GaW5pc2hlZCAtIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiBTaW11bGF0b3IgaXMgZnVsbHkgYm9vdGVkLlxuICogQHByb3BlcnR5IHs/RnVuY3Rpb259IG9uRXJyb3IgLSBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIG1vbml0b3JpbmcgdGhlIGJvb3RpbmcgcHJvY2Vzc1xuICogb3Igd2hlbiB0aGUgdGltZW91dCBoYXMgZXhwaXJlZC5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IHNob3VsZFByZWJvb3QgW2ZhbHNlXSBXaGV0aGVyIHRvIHByZWJvb3QgdGhlIFNpbXVsYXRvclxuICogaWYgdGhpcyBjb21tYW5kIGlzIGNhbGxlZCBhbmQgaXQgaXMgbm90IGFscmVhZHkgaW4gYm9vdGVkIG9yIGJvb3Rpbmcgc3RhdGUuXG4gKi9cblxuLyoqXG4gKiBTdGFydCBtb25pdG9yaW5nIGZvciBib290IHN0YXR1cyBvZiB0aGUgcGFydGljdWxhciBTaW11bGF0b3IuXG4gKiBJZiBvbkZpbmlzaGVkIHByb3BlcnR5IGlzIG5vdCBzZXQgdGhlbiB0aGUgbWV0aG9kIHdpbGwgYmxvY2tcbiAqIHVudGlsIFNpbXVsYXRvciBib290aW5nIGlzIGNvbXBsZXRlZC5cbiAqIFRoZSBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgc2luY2UgWGNvZGU4LlxuICpcbiAqIEBwYXJhbSB7P0Jvb3RNb25pdG9yT3B0aW9uc30gb3B0cyAtIE1vbml0b3Jpbmcgb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtTdWJQcm9jZXNzfSBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgbW9uaXRvcmluZyBwcm9jZXNzLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBTaW11bGF0b3IgZmFpbHMgdG8gZmluaXNoIGJvb3Rpbmcgd2l0aGluIHRoZSBnaXZlbiB0aW1lb3V0IGFuZCBvbkZpbmlzaGVkXG4gKiBwcm9wZXJ0eSBpcyBub3Qgc2V0LlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuc3RhcnRCb290TW9uaXRvciA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0Qm9vdE1vbml0b3IgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdGltZW91dCA9IDI0MDAwMCxcbiAgICBvbldhaXRpbmdEYXRhTWlncmF0aW9uLFxuICAgIG9uV2FpdGluZ1N5c3RlbUFwcCxcbiAgICBvbkZpbmlzaGVkLFxuICAgIG9uRXJyb3IsXG4gICAgc2hvdWxkUHJlYm9vdCxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHVkaWQgPSB0aGlzLnJlcXVpcmVVZGlkKCdib290c3RhdHVzJyk7XG5cbiAgbGV0IHN0YXR1cyA9ICcnO1xuICBsZXQgaXNCb290aW5nRmluaXNoZWQgPSBmYWxzZTtcbiAgbGV0IGVycm9yID0gbnVsbDtcbiAgbGV0IHRpbWVvdXRIYW5kbGVyID0gbnVsbDtcbiAgY29uc3QgYXJncyA9IFt1ZGlkXTtcbiAgaWYgKHNob3VsZFByZWJvb3QpIHtcbiAgICBhcmdzLnB1c2goJy1iJyk7XG4gIH1cbiAgY29uc3QgYm9vdE1vbml0b3IgPSBhd2FpdCB0aGlzLmV4ZWMoJ2Jvb3RzdGF0dXMnLCB7XG4gICAgYXJncyxcbiAgICBhc3luY2hyb25vdXM6IHRydWUsXG4gIH0pO1xuICBib290TW9uaXRvci5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgc3RhdHVzICs9IHN0ZG91dCB8fCBzdGRlcnI7XG4gICAgaWYgKHN0ZG91dCkge1xuICAgICAgaWYgKHN0ZG91dC5pbmNsdWRlcygnV2FpdGluZyBvbiBEYXRhIE1pZ3JhdGlvbicpICYmIG9uV2FpdGluZ0RhdGFNaWdyYXRpb24pIHtcbiAgICAgICAgb25XYWl0aW5nRGF0YU1pZ3JhdGlvbigpO1xuICAgICAgfSBlbHNlIGlmIChzdGRvdXQuaW5jbHVkZXMoJ1dhaXRpbmcgb24gU3lzdGVtIEFwcCcpICYmIG9uV2FpdGluZ1N5c3RlbUFwcCkge1xuICAgICAgICBvbldhaXRpbmdTeXN0ZW1BcHAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBib290TW9uaXRvci5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICBpZiAodGltZW91dEhhbmRsZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlcik7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICBpZiAob25GaW5pc2hlZCkge1xuICAgICAgICBvbkZpbmlzaGVkKCk7XG4gICAgICB9XG4gICAgICBpc0Jvb3RpbmdGaW5pc2hlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXR1cyA9IHN0YXR1cyB8fCBzaWduYWw7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihzdGF0dXMpO1xuICAgICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgICAgb25FcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgYXdhaXQgYm9vdE1vbml0b3Iuc3RhcnQoMCk7XG4gIGNvbnN0IHN0b3BNb25pdG9yID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChib290TW9uaXRvci5pc1J1bm5pbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGJvb3RNb25pdG9yLnN0b3AoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nLndhcm4oZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IHN0YXJ0ID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgaWYgKG9uRmluaXNoZWQpIHtcbiAgICB0aW1lb3V0SGFuZGxlciA9IHNldFRpbWVvdXQoc3RvcE1vbml0b3IsIHRpbWVvdXQpO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKCgpID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQm9vdGluZ0ZpbmlzaGVkO1xuICAgICAgfSwge3dhaXRNczogdGltZW91dCwgaW50ZXJ2YWxNczogNTAwfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBhd2FpdCBzdG9wTW9uaXRvcigpO1xuICAgICAgY29uc3QgW3NlY29uZHNdID0gcHJvY2Vzcy5ocnRpbWUoc3RhcnQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVGhlIHNpbXVsYXRvciAke3VkaWR9IGhhcyBmYWlsZWQgdG8gZmluaXNoIGJvb3RpbmcgYWZ0ZXIgJHtzZWNvbmRzfXMuIGAgK1xuICAgICAgICBgT3JpZ2luYWwgc3RhdHVzOiAke3N0YXR1c31gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJvb3RNb25pdG9yO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9zdWJjb21tYW5kcy9ib290c3RhdHVzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=