UNPKG

logkitten

Version:

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

84 lines (80 loc) 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Level", { enumerable: true, get: function () { return _constants.Level; } }); exports.logkitten = logkitten; exports.logkittenAndroid = logkittenAndroid; exports.logkittenCustom = logkittenCustom; exports.logkittenIOS = logkittenIOS; var _emitter = require("./emitter"); var _android = require("./android"); var _ios = require("./ios"); var _constants = require("./constants"); /* Common */ const alwaysTrue = () => true; function logkittenCustom(options) { var _loggingProcess$stdou, _loggingProcess$stder, _loggingProcess$stder2, _loggingProcess$stdou2; const driver = options.platform(options); const userFilter = options.filter || alwaysTrue; const platformFilter = driver.filter || alwaysTrue; const loggingProcess = driver.process; const emitter = new _emitter.LogkittenEmitter(loggingProcess); function handleData(raw, stderr) { let entries; try { entries = driver.parse(raw, stderr); } catch (error) { emitter.emit('error', error); } if (entries) { for (const entry of entries) { if (platformFilter(entry) && userFilter(entry)) { emitter.emit('entry', entry); } } } } function handleError(error) { emitter.emit('error', error); emitter.close(); } loggingProcess.on('error', handleError); (_loggingProcess$stdou = loggingProcess.stdout) === null || _loggingProcess$stdou === void 0 || _loggingProcess$stdou.on('error', handleError); (_loggingProcess$stder = loggingProcess.stderr) === null || _loggingProcess$stder === void 0 || _loggingProcess$stder.on('error', handleError); (_loggingProcess$stder2 = loggingProcess.stderr) === null || _loggingProcess$stder2 === void 0 || _loggingProcess$stder2.on('data', data => handleData(data, true)); (_loggingProcess$stdou2 = loggingProcess.stdout) === null || _loggingProcess$stdou2 === void 0 || _loggingProcess$stdou2.on('data', data => handleData(data, false)); return emitter; } // eslint-disable-next-line no-redeclare // eslint-disable-next-line no-redeclare function logkitten(options) { const { platform } = options; if (platform === 'android') { return logkittenAndroid(options); } else if (platform === 'ios') { return logkittenIOS(options); } else { throw new Error(`Platform ${platform} is not supported`); } } function logkittenIOS(options) { return logkittenCustom({ ...options, platform: _ios.create }); } function logkittenAndroid(options) { return logkittenCustom({ ...options, platform: _android.create }); } //# sourceMappingURL=api.js.map