UNPKG

repomix

Version:

A tool to pack repository contents to single file for AI consumption

98 lines (97 loc) 2.79 kB
import util from 'node:util'; import { workerData } from 'node:worker_threads'; import pc from 'picocolors'; export const repomixLogLevels = { SILENT: -1, ERROR: 0, WARN: 1, INFO: 2, DEBUG: 3, }; class RepomixLogger { level = repomixLogLevels.INFO; constructor() { this.init(); } init() { this.setLogLevel(repomixLogLevels.INFO); } setLogLevel(level) { this.level = level; } getLogLevel() { return this.level; } error(...args) { if (this.level >= repomixLogLevels.ERROR) { console.error(pc.red(this.formatArgs(args))); } } warn(...args) { if (this.level >= repomixLogLevels.WARN) { console.log(pc.yellow(this.formatArgs(args))); } } success(...args) { if (this.level >= repomixLogLevels.INFO) { console.log(pc.green(this.formatArgs(args))); } } info(...args) { if (this.level >= repomixLogLevels.INFO) { console.log(pc.cyan(this.formatArgs(args))); } } log(...args) { if (this.level >= repomixLogLevels.INFO) { console.log(this.formatArgs(args)); } } note(...args) { if (this.level >= repomixLogLevels.INFO) { console.log(pc.dim(this.formatArgs(args))); } } debug(...args) { if (this.level >= repomixLogLevels.DEBUG) { console.log(pc.blue(this.formatArgs(args))); } } trace(...args) { if (this.level >= repomixLogLevels.DEBUG) { console.log(pc.gray(this.formatArgs(args))); } } formatArgs(args) { return args .map((arg) => (typeof arg === 'object' ? util.inspect(arg, { depth: null, colors: true }) : arg)) .join(' '); } } export const logger = new RepomixLogger(); export const setLogLevel = (level) => { logger.setLogLevel(level); }; const isValidLogLevel = (level) => { return (level === repomixLogLevels.SILENT || level === repomixLogLevels.ERROR || level === repomixLogLevels.WARN || level === repomixLogLevels.INFO || level === repomixLogLevels.DEBUG); }; export const setLogLevelByWorkerData = () => { const envLogLevel = process.env.REPOMIX_LOG_LEVEL; if (envLogLevel !== undefined) { const logLevel = Number(envLogLevel); if (!Number.isNaN(logLevel) && isValidLogLevel(logLevel)) { setLogLevel(logLevel); return; } } if (Array.isArray(workerData) && workerData.length > 1 && workerData[1]?.logLevel !== undefined) { const logLevel = workerData[1].logLevel; if (isValidLogLevel(logLevel)) { setLogLevel(logLevel); } } };