UNPKG

logkitten

Version:

Stream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.

60 lines (58 loc) 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LogkittenEmitter = void 0; var _events = require("events"); function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /** * LogkittenEmitter extends EventEmitter and provides an async .close([cb]) method * to programmatically stop the logging process and clean up resources. */ class LogkittenEmitter extends _events.EventEmitter { constructor(loggingProcess) { super(); _defineProperty(this, "_closePromise", void 0); _defineProperty(this, "_loggingProcess", void 0); this._loggingProcess = loggingProcess; } /** * Closes the logging process and emits 'close'. * Supports both callback and Promise API. */ close(cb) { if (this._closePromise) { // eslint-disable-next-line promise/catch-or-return, promise/prefer-await-to-then, promise/no-callback-in-promise if (cb) this._closePromise.then(() => cb(), cb); return this._closePromise; } this._closePromise = new Promise((resolve, reject) => { const onExit = () => { this.emit('close'); if (cb) cb(); resolve(); }; try { var _this$_loggingProcess, _this$_loggingProcess2, _this$_loggingProcess3; this._loggingProcess.removeAllListeners(); (_this$_loggingProcess = this._loggingProcess.stdin) === null || _this$_loggingProcess === void 0 || _this$_loggingProcess.removeAllListeners(); (_this$_loggingProcess2 = this._loggingProcess.stdout) === null || _this$_loggingProcess2 === void 0 || _this$_loggingProcess2.removeAllListeners(); (_this$_loggingProcess3 = this._loggingProcess.stderr) === null || _this$_loggingProcess3 === void 0 || _this$_loggingProcess3.removeAllListeners(); if (this._loggingProcess.exitCode !== null || this._loggingProcess.killed) { onExit(); } else { this._loggingProcess.on('exit', onExit); this._loggingProcess.kill(); } } catch (err) { if (cb) cb(err); reject(err); } }); return this._closePromise; } } exports.LogkittenEmitter = LogkittenEmitter; //# sourceMappingURL=emitter.js.map