UNPKG

logkitten

Version:

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

53 lines (48 loc) 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LineBuffer = void 0; 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); } /** * LineBuffer handles streaming data that may arrive in chunks that split mid-line. * It buffers incomplete lines until a newline is received. */ class LineBuffer { constructor() { _defineProperty(this, "buffer", ''); } /** * Process a chunk of data and return complete lines * @param chunk - The incoming data chunk * @returns Array of complete lines */ processChunk(chunk) { const data = chunk.toString(); this.buffer += data; const lines = this.buffer.split(/\r?\n/); // Keep the last line in buffer (might be incomplete) this.buffer = lines.pop() || ''; // Return complete lines, filtering out empty ones return lines.filter(Boolean); } /** * Get any remaining buffered content (call when stream ends) * @returns The remaining buffered content or empty string */ flush() { const remaining = this.buffer; this.buffer = ''; return remaining; } /** * Clear the buffer */ clear() { this.buffer = ''; } } exports.LineBuffer = LineBuffer; //# sourceMappingURL=line-buffer.js.map