appium-instruments
Version:
IOS Instruments + instruments-without-delay launcher used by Appium
78 lines (64 loc) • 6.87 kB
JavaScript
;
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _logger = require('./logger');
var _logger2 = _interopRequireDefault(_logger);
var _through = require('through');
var _through2 = _interopRequireDefault(_through);
function clearBufferChars(output) {
// Instruments output is buffered, so for each log output we also output
// a stream of very many ****. This function strips those out so all we
// get is the log output we care about
var re = /(\n|^)\*+\n?/g;
output = output.toString();
output = output.replace(re, '');
return output;
}
function outputStream() {
return (0, _through2['default'])(function outputStreamHandler(output) {
output = clearBufferChars(output);
// if we have multiple log lines, indent non-first ones
if (output !== '') {
// get rid of newline at the end
output = output.replace(/\n$/m, '');
// indent instead of newline
output = output.replace(/\n/m, '\n ');
output = '[INST] ' + output;
output = output.green;
_logger2['default'].debug(output);
}
this.queue(output);
});
}
function errorStream() {
return (0, _through2['default'])(function errorStreamHandler(output) {
// get rid of newline at the end
output = output.replace(/\n$/m, '');
output = '[INST STDERR] ' + output;
output = output.yellow;
_logger2['default'].debug(output);
this.queue(output);
});
}
function webSocketAlertStream(webSocket) {
return (0, _through2['default'])(function webSocketAlertStreamHandler(output) {
if (webSocket) {
var re = /Call to onAlert returned 'YES'/;
if (re.test(output)) {
_logger2['default'].debug('Emiting alert message...');
webSocket.sockets.emit('alert', { message: output });
}
}
this.queue(output);
});
}
function dumpStream() {
return (0, _through2['default'])(function nullStreamHandler() {/* ignore all stream output */});
}
exports.outputStream = outputStream;
exports.errorStream = errorStream;
exports.webSocketAlertStream = webSocketAlertStream;
exports.dumpStream = dumpStream;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zdHJlYW1zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O3NCQUFnQixVQUFVOzs7O3VCQUNOLFNBQVM7Ozs7QUFHN0IsU0FBUyxnQkFBZ0IsQ0FBRSxNQUFNLEVBQUU7Ozs7QUFJakMsTUFBSSxFQUFFLEdBQUcsZUFBZSxDQUFDO0FBQ3pCLFFBQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDM0IsUUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRUQsU0FBUyxZQUFZLEdBQUk7QUFDdkIsU0FBTywwQkFBUSxTQUFTLG1CQUFtQixDQUFFLE1BQU0sRUFBRTtBQUNuRCxVQUFNLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7OztBQUdsQyxRQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUU7O0FBRWpCLFlBQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQzs7QUFFcEMsWUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzVDLFlBQU0sZUFBYSxNQUFNLEFBQUUsQ0FBQztBQUM1QixZQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUN0QiwwQkFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDbkI7QUFDRCxRQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0dBQ3BCLENBQUMsQ0FBQztDQUNKOztBQUVELFNBQVMsV0FBVyxHQUFJO0FBQ3RCLFNBQU8sMEJBQVEsU0FBUyxrQkFBa0IsQ0FBRSxNQUFNLEVBQUU7O0FBRWxELFVBQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQyxVQUFNLHNCQUFxQixNQUFNLEFBQUcsQ0FBQztBQUNyQyxVQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUN2Qix3QkFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEIsUUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztHQUNwQixDQUFDLENBQUM7Q0FDSjs7QUFFRCxTQUFTLG9CQUFvQixDQUFFLFNBQVMsRUFBRTtBQUN4QyxTQUFPLDBCQUFRLFNBQVMsMkJBQTJCLENBQUUsTUFBTSxFQUFFO0FBQzNELFFBQUksU0FBUyxFQUFFO0FBQ2IsVUFBSSxFQUFFLEdBQUcsZ0NBQWdDLENBQUM7QUFDMUMsVUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ25CLDRCQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBQ3RDLGlCQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztPQUNwRDtLQUNGO0FBQ0QsUUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztHQUNwQixDQUFDLENBQUM7Q0FDSjs7QUFFRCxTQUFTLFVBQVUsR0FBSTtBQUNyQixTQUFPLDBCQUFRLFNBQVMsaUJBQWlCLEdBQUksZ0NBQWlDLENBQUMsQ0FBQztDQUNqRjs7UUFFUSxZQUFZLEdBQVosWUFBWTtRQUFFLFdBQVcsR0FBWCxXQUFXO1FBQUUsb0JBQW9CLEdBQXBCLG9CQUFvQjtRQUFFLFVBQVUsR0FBVixVQUFVIiwiZmlsZSI6ImxpYi9zdHJlYW1zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgdGhyb3VnaCBmcm9tICd0aHJvdWdoJztcblxuXG5mdW5jdGlvbiBjbGVhckJ1ZmZlckNoYXJzIChvdXRwdXQpIHtcbiAgLy8gSW5zdHJ1bWVudHMgb3V0cHV0IGlzIGJ1ZmZlcmVkLCBzbyBmb3IgZWFjaCBsb2cgb3V0cHV0IHdlIGFsc28gb3V0cHV0XG4gIC8vIGEgc3RyZWFtIG9mIHZlcnkgbWFueSAqKioqLiBUaGlzIGZ1bmN0aW9uIHN0cmlwcyB0aG9zZSBvdXQgc28gYWxsIHdlXG4gIC8vIGdldCBpcyB0aGUgbG9nIG91dHB1dCB3ZSBjYXJlIGFib3V0XG4gIGxldCByZSA9IC8oXFxufF4pXFwqK1xcbj8vZztcbiAgb3V0cHV0ID0gb3V0cHV0LnRvU3RyaW5nKCk7XG4gIG91dHB1dCA9IG91dHB1dC5yZXBsYWNlKHJlLCAnJyk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbmZ1bmN0aW9uIG91dHB1dFN0cmVhbSAoKSB7XG4gIHJldHVybiB0aHJvdWdoKGZ1bmN0aW9uIG91dHB1dFN0cmVhbUhhbmRsZXIgKG91dHB1dCkge1xuICAgIG91dHB1dCA9IGNsZWFyQnVmZmVyQ2hhcnMob3V0cHV0KTtcblxuICAgIC8vIGlmIHdlIGhhdmUgbXVsdGlwbGUgbG9nIGxpbmVzLCBpbmRlbnQgbm9uLWZpcnN0IG9uZXNcbiAgICBpZiAob3V0cHV0ICE9PSAnJykge1xuICAgICAgLy8gZ2V0IHJpZCBvZiBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICAgIG91dHB1dCA9IG91dHB1dC5yZXBsYWNlKC9cXG4kL20sICcnKTtcbiAgICAgIC8vIGluZGVudCBpbnN0ZWFkIG9mIG5ld2xpbmVcbiAgICAgIG91dHB1dCA9IG91dHB1dC5yZXBsYWNlKC9cXG4vbSwgJ1xcbiAgICAgICAnKTtcbiAgICAgIG91dHB1dCA9IGBbSU5TVF0gJHtvdXRwdXR9YDtcbiAgICAgIG91dHB1dCA9IG91dHB1dC5ncmVlbjtcbiAgICAgIGxvZy5kZWJ1ZyhvdXRwdXQpO1xuICAgIH1cbiAgICB0aGlzLnF1ZXVlKG91dHB1dCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlcnJvclN0cmVhbSAoKSB7XG4gIHJldHVybiB0aHJvdWdoKGZ1bmN0aW9uIGVycm9yU3RyZWFtSGFuZGxlciAob3V0cHV0KSB7XG4gICAgLy8gZ2V0IHJpZCBvZiBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICBvdXRwdXQgPSBvdXRwdXQucmVwbGFjZSgvXFxuJC9tLCAnJyk7XG4gICAgb3V0cHV0ID0gKGBbSU5TVCBTVERFUlJdICR7b3V0cHV0fWApO1xuICAgIG91dHB1dCA9IG91dHB1dC55ZWxsb3c7XG4gICAgbG9nLmRlYnVnKG91dHB1dCk7XG4gICAgdGhpcy5xdWV1ZShvdXRwdXQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gd2ViU29ja2V0QWxlcnRTdHJlYW0gKHdlYlNvY2tldCkge1xuICByZXR1cm4gdGhyb3VnaChmdW5jdGlvbiB3ZWJTb2NrZXRBbGVydFN0cmVhbUhhbmRsZXIgKG91dHB1dCkge1xuICAgIGlmICh3ZWJTb2NrZXQpIHtcbiAgICAgIGxldCByZSA9IC9DYWxsIHRvIG9uQWxlcnQgcmV0dXJuZWQgJ1lFUycvO1xuICAgICAgaWYgKHJlLnRlc3Qob3V0cHV0KSkge1xuICAgICAgICBsb2cuZGVidWcoJ0VtaXRpbmcgYWxlcnQgbWVzc2FnZS4uLicpO1xuICAgICAgICB3ZWJTb2NrZXQuc29ja2V0cy5lbWl0KCdhbGVydCcsIHttZXNzYWdlOiBvdXRwdXR9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5xdWV1ZShvdXRwdXQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZHVtcFN0cmVhbSAoKSB7XG4gIHJldHVybiB0aHJvdWdoKGZ1bmN0aW9uIG51bGxTdHJlYW1IYW5kbGVyICgpIHsgLyogaWdub3JlIGFsbCBzdHJlYW0gb3V0cHV0ICovfSk7XG59XG5cbmV4cG9ydCB7IG91dHB1dFN0cmVhbSwgZXJyb3JTdHJlYW0sIHdlYlNvY2tldEFsZXJ0U3RyZWFtLCBkdW1wU3RyZWFtIH07XG4iXSwic291cmNlUm9vdCI6Ii4uLy4uIn0=