Skip to main content
Glama
MIT License
27,120
19,746
  • Linux
  • Apple
logger.ts•3.21 kB
import util from 'node:util'; import { workerData } from 'node:worker_threads'; import pc from 'picocolors'; export const repomixLogLevels = { SILENT: -1, // No output ERROR: 0, // error WARN: 1, // warn INFO: 2, // success, info, log, note DEBUG: 3, // debug, trace } as const; export type RepomixLogLevel = (typeof repomixLogLevels)[keyof typeof repomixLogLevels]; class RepomixLogger { private level: RepomixLogLevel = repomixLogLevels.INFO; constructor() { this.init(); } init() { this.setLogLevel(repomixLogLevels.INFO); } setLogLevel(level: RepomixLogLevel) { this.level = level; } getLogLevel(): RepomixLogLevel { return this.level; } error(...args: unknown[]) { if (this.level >= repomixLogLevels.ERROR) { console.error(pc.red(this.formatArgs(args))); } } warn(...args: unknown[]) { if (this.level >= repomixLogLevels.WARN) { console.log(pc.yellow(this.formatArgs(args))); } } success(...args: unknown[]) { if (this.level >= repomixLogLevels.INFO) { console.log(pc.green(this.formatArgs(args))); } } info(...args: unknown[]) { if (this.level >= repomixLogLevels.INFO) { console.log(pc.cyan(this.formatArgs(args))); } } log(...args: unknown[]) { if (this.level >= repomixLogLevels.INFO) { console.log(this.formatArgs(args)); } } note(...args: unknown[]) { if (this.level >= repomixLogLevels.INFO) { console.log(pc.dim(this.formatArgs(args))); } } debug(...args: unknown[]) { if (this.level >= repomixLogLevels.DEBUG) { console.log(pc.blue(this.formatArgs(args))); } } trace(...args: unknown[]) { if (this.level >= repomixLogLevels.DEBUG) { console.log(pc.gray(this.formatArgs(args))); } } private formatArgs(args: unknown[]): string { 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: RepomixLogLevel) => { logger.setLogLevel(level); }; /** * Set logger log level from workerData if valid. * This is used in worker threads where configuration is passed via workerData. */ const isValidLogLevel = (level: number): level is RepomixLogLevel => { return ( level === repomixLogLevels.SILENT || level === repomixLogLevels.ERROR || level === repomixLogLevels.WARN || level === repomixLogLevels.INFO || level === repomixLogLevels.DEBUG ); }; export const setLogLevelByWorkerData = () => { // Try to get log level from environment variable first (for child_process workers) const envLogLevel = process.env.REPOMIX_LOG_LEVEL; if (envLogLevel !== undefined) { const logLevel = Number(envLogLevel); if (!Number.isNaN(logLevel) && isValidLogLevel(logLevel)) { setLogLevel(logLevel); return; } } // Fallback to workerData for worker_threads if (Array.isArray(workerData) && workerData.length > 1 && workerData[1]?.logLevel !== undefined) { const logLevel = workerData[1].logLevel; if (isValidLogLevel(logLevel)) { setLogLevel(logLevel); } } };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yamadashy/repomix'

If you have feedback or need assistance with the MCP directory API, please join our Discord server