import { cyan, magenta, dim, green, yellow, red, blue, gray } from "./colors.js"; import log from "./log.js"; function formatSegments(segments) { if (segments.length === 0) return ''; // First segment (cliName) → cyan // Second segment (command) → bold // Remaining segments → normal for paths, dim for short fn-like segments const parts = []; for (let i = 0; i < segments.length; i++) { const seg = segments[i]; if (i === 0) { parts.push(cyan(seg)); } else if (i === 1) { parts.push(magenta(seg)); } else if (seg.startsWith('/')) { // Path segment — normal (stands out) parts.push(seg); } else { // Function/phase segment — dim parts.push(dim(seg)); } } return parts.join(' '); } function levelColor(level) { switch (level) { case 'info': return green(level); case 'warn': return yellow(level); case 'error': return red(level); case 'verbose': return dim(level); case 'exec': return blue(level); case 'http': return gray(level); case 'fs': return yellow(level); default: return level; } } function createLogger(segments) { function emit(level, message) { // Insert colored level after cliName const prefix = segments.length > 0 ? `${formatSegments([segments[0]])} ${levelColor(level)}` : levelColor(level); const rest = segments.length > 1 ? ` ${formatSegments(segments.slice(1))}` : ''; const line = `${prefix}${rest} ${message}`; // exec, http, and fs use info transport; verbose uses verbose transport const transport = level === 'exec' || level === 'http' || level === 'fs' ? 'info' : level; log[transport](line); } return { info: (message) => emit('info', message), warn: (message) => emit('warn', message), error: (message) => emit('error', message), verbose: (message) => emit('verbose', message), exec: (message) => emit('exec', message), http: (message) => emit('http', message), fs: (message) => emit('fs', message), prefix: (segment) => createLogger([...segments, segment]), }; } export function createPrefixLog(...segments) { return createLogger(segments); } //# sourceMappingURL=prefixLog.js.map