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
JavaScript
;
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