UNPKG

web-ext-run

Version:

A tool to open and run web extensions

72 lines (70 loc) 1.9 kB
import { fileURLToPath } from 'url'; import pino, { levels as logLevels } from 'pino'; export class ConsoleStream { verbose; isCapturing; capturedMessages; constructor({ verbose = false } = {}) { this.verbose = verbose; this.isCapturing = false; this.capturedMessages = []; } format({ name, msg, level }) { const prefix = this.verbose ? `[${name}][${logLevels.labels[level]}] ` : ''; return `${prefix}${msg}\n`; } makeVerbose() { this.verbose = true; } write(jsonString, { localProcess = process } = {}) { const packet = JSON.parse(jsonString); const thisLevel = this.verbose ? logLevels.values.trace : logLevels.values.info; if (packet.level >= thisLevel) { const msg = this.format(packet); if (this.isCapturing) { this.capturedMessages.push(msg); } else if (packet.level > logLevels.values.info) { localProcess.stderr.write(msg); } else { localProcess.stdout.write(msg); } } } startCapturing() { this.isCapturing = true; } stopCapturing() { this.isCapturing = false; this.capturedMessages = []; } flushCapturedLogs({ localProcess = process } = {}) { for (const msg of this.capturedMessages) { localProcess.stdout.write(msg); } this.capturedMessages = []; } } export const consoleStream = new ConsoleStream(); // createLogger types and implementation. export function createLogger(moduleURL, { createPinoLog = pino } = {}) { return createPinoLog({ // Strip the leading src/ from file names (which is in all file names) to // make the name less redundant. name: moduleURL ? fileURLToPath(moduleURL).replace(/^src\//, '') : 'unknown-module', // Capture all log levels and let the stream filter them. level: logLevels.values.trace }, consoleStream); } //# sourceMappingURL=logger.js.map