@mks2508/better-logger 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/.claude/settings.local.json +3 -1
  2. package/CHANGELOG.json +76 -1
  3. package/dist/Logger.d.ts +12 -12
  4. package/dist/Logger.d.ts.map +1 -1
  5. package/dist/chunks/{Logger-BCfx_yCK.js → Logger-BV0v1AyC.js} +2 -2
  6. package/dist/chunks/Logger-BV0v1AyC.js.map +1 -0
  7. package/dist/chunks/{Logger-C126NTrD.js → Logger-C086w3EM.js} +8 -8
  8. package/dist/chunks/Logger-C086w3EM.js.map +1 -0
  9. package/dist/chunks/environment-C_8J-zQ_.js +4 -0
  10. package/dist/chunks/environment-C_8J-zQ_.js.map +1 -0
  11. package/dist/chunks/{environment-TI2ByCPT.js → environment-DXHouGD4.js} +468 -100
  12. package/dist/chunks/environment-DXHouGD4.js.map +1 -0
  13. package/dist/chunks/{formatting-CuNUqGks.js → formatting-BNnVUPcw.js} +2 -2
  14. package/dist/chunks/{formatting-CuNUqGks.js.map → formatting-BNnVUPcw.js.map} +1 -1
  15. package/dist/chunks/{formatting-Blwy-f0W.js → formatting-Cg5YhB9Y.js} +2 -2
  16. package/dist/chunks/{formatting-Blwy-f0W.js.map → formatting-Cg5YhB9Y.js.map} +1 -1
  17. package/dist/core.cjs +1 -1
  18. package/dist/core.js +2 -2
  19. package/dist/exports.cjs +1 -1
  20. package/dist/exports.js +2 -2
  21. package/dist/index.cjs +1 -1
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.ts +8 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +197 -15
  26. package/dist/index.js.map +1 -1
  27. package/dist/styling.cjs +1 -1
  28. package/dist/styling.js +3 -3
  29. package/dist/terminal/color-converter.d.ts +73 -0
  30. package/dist/terminal/color-converter.d.ts.map +1 -0
  31. package/dist/terminal/formatter.d.ts +20 -0
  32. package/dist/terminal/formatter.d.ts.map +1 -0
  33. package/dist/terminal/terminal-renderer.d.ts +20 -6
  34. package/dist/terminal/terminal-renderer.d.ts.map +1 -1
  35. package/dist/types/core.d.ts +17 -0
  36. package/dist/types/core.d.ts.map +1 -1
  37. package/dist/types/index.d.ts +1 -1
  38. package/dist/types/index.d.ts.map +1 -1
  39. package/dist/utils/environment-detector.d.ts +10 -0
  40. package/dist/utils/environment-detector.d.ts.map +1 -1
  41. package/package.json +1 -1
  42. package/packages/core/package.json +1 -1
  43. package/packages/styling/package.json +2 -2
  44. package/src/Logger.ts +12 -12
  45. package/src/index.ts +57 -2
  46. package/src/terminal/color-converter.ts +315 -0
  47. package/src/terminal/formatter.ts +236 -0
  48. package/src/terminal/terminal-renderer.ts +74 -79
  49. package/src/types/core.ts +22 -0
  50. package/src/types/index.ts +5 -0
  51. package/src/utils/environment-detector.ts +23 -1
  52. package/dist/chunks/Logger-BCfx_yCK.js.map +0 -1
  53. package/dist/chunks/Logger-C126NTrD.js.map +0 -1
  54. package/dist/chunks/environment-Ba5kShbx.js +0 -4
  55. package/dist/chunks/environment-Ba5kShbx.js.map +0 -1
  56. package/dist/chunks/environment-TI2ByCPT.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/transports/ConsoleTransport.ts","../src/transports/FileTransport.ts","../src/transports/HttpTransport.ts","../src/handlers/FileLogHandler.ts","../src/handlers/AnalyticsLogHandler.ts","../src/styling/StyleCache.ts","../src/index.ts"],"sourcesContent":["import type { TransportRecord, TransportOptions, ITransport, LogLevel } from '../types/index.js';\n\nexport class ConsoleTransport implements ITransport {\n readonly name = 'console';\n\n constructor(private options?: TransportOptions) {}\n\n write(record: TransportRecord): void {\n const method = this.getConsoleMethod(record.level);\n const prefix = record.prefix ? `[${record.prefix}] ` : '';\n const location = record.location\n ? ` (${record.location.file}:${record.location.line})`\n : '';\n\n console[method](`[${record.level.toUpperCase()}]${prefix} ${record.msg}${location}`);\n }\n\n private getConsoleMethod(level: LogLevel): 'log' | 'info' | 'warn' | 'error' {\n switch (level) {\n case 'debug': return 'log';\n case 'info': return 'info';\n case 'warn': return 'warn';\n case 'error':\n case 'critical': return 'error';\n default: return 'log';\n }\n }\n}\n","import type { TransportRecord, TransportOptions, ITransport } from '../types/index.js';\n\nexport interface FileTransportOptions extends TransportOptions {\n destination?: string;\n}\n\nexport class FileTransport implements ITransport {\n readonly name = 'file';\n private buffer: string[] = [];\n private flushTimer?: ReturnType<typeof setInterval>;\n private options: FileTransportOptions;\n\n constructor(options?: FileTransportOptions) {\n this.options = options || {};\n\n if (this.options.flushInterval) {\n this.flushTimer = setInterval(() => this.flush(), this.options.flushInterval);\n }\n }\n\n write(record: TransportRecord): void {\n const line = JSON.stringify(record) + '\\n';\n this.buffer.push(line);\n\n if (this.buffer.length >= (this.options.batchSize || 100)) {\n this.flush();\n }\n }\n\n async flush(): Promise<void> {\n if (this.buffer.length === 0) return;\n\n const lines = this.buffer.join('');\n this.buffer = [];\n\n if (typeof globalThis.process !== 'undefined' && typeof require === 'function') {\n try {\n const fs = require('fs');\n const dest = this.options.destination || 'app.log';\n fs.appendFileSync(dest, lines);\n } catch {\n // Silent fail in browser or if fs not available\n }\n }\n }\n\n close(): void {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n }\n this.flush();\n }\n}\n","import type { TransportRecord, TransportOptions, ITransport } from '../types/index.js';\n\nexport interface HttpTransportOptions extends TransportOptions {\n url?: string;\n headers?: Record<string, string>;\n}\n\nexport class HttpTransport implements ITransport {\n readonly name = 'http';\n private buffer: TransportRecord[] = [];\n private flushTimer?: ReturnType<typeof setInterval>;\n private options: HttpTransportOptions;\n\n constructor(options?: HttpTransportOptions) {\n this.options = options || {};\n\n if (this.options.flushInterval) {\n this.flushTimer = setInterval(() => this.flush(), this.options.flushInterval);\n }\n }\n\n write(record: TransportRecord): void {\n this.buffer.push(record);\n\n if (this.buffer.length >= (this.options.batchSize || 50)) {\n this.flush();\n }\n }\n\n async flush(): Promise<void> {\n if (this.buffer.length === 0 || !this.options.url) return;\n\n const records = [...this.buffer];\n this.buffer = [];\n\n try {\n await fetch(this.options.url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...this.options.headers\n },\n body: JSON.stringify({ logs: records })\n });\n } catch {\n this.buffer.unshift(...records);\n }\n }\n\n close(): void {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n }\n this.flush();\n }\n}\n","/**\n * @fileoverview File-based log handler for Advanced Logger\n */\n\nimport type { ILogHandler, LogLevel, LogMetadata } from '../types/index.js';\nimport { isNode, isBrowser } from '../utils/environment.js';\nimport { safeSerialize } from '../utils/formatting.js';\n\n/**\n * Universal file-based log handler for persistent logging\n * Works in both Node.js (real files) and browser (localStorage)\n */\nexport class FileLogHandler implements ILogHandler {\n private filename: string;\n private maxSize?: number;\n private fs?: any; // Node.js fs module\n\n constructor(filename: string = 'app.log', maxSize?: number) {\n this.filename = filename;\n this.maxSize = maxSize;\n \n // Load Node.js fs module if in Node environment\n if (isNode) {\n try {\n this.fs = require('fs');\n } catch (error) {\n console.warn('FileLogHandler: Unable to load fs module:', error);\n }\n }\n }\n\n handle(level: LogLevel, message: string, args: any[], metadata: LogMetadata): void {\n const logEntry = {\n timestamp: metadata.timestamp,\n level: level.toUpperCase(),\n prefix: metadata.prefix,\n message,\n args: args.slice(1).map(arg => safeSerialize(arg)),\n location: metadata.stackInfo,\n };\n\n const logLine = this.formatLogLine(logEntry);\n\n if (isNode && this.fs) {\n this.writeToFileNode(logLine);\n } else if (isBrowser) {\n this.writeToFileLocal(logLine);\n } else {\n // Fallback - just console output\n console.log(`[FILE-LOG] ${logLine}`);\n }\n }\n\n /**\n * Format log entry as a single line for file storage\n */\n private formatLogLine(entry: any): string {\n const parts = [\n entry.timestamp,\n `[${entry.level}]`,\n entry.prefix ? `[${entry.prefix}]` : '',\n entry.message\n ].filter(Boolean);\n\n let line = parts.join(' ');\n \n if (entry.args && entry.args.length > 0) {\n line += ' ' + entry.args.map((arg: any) => \n typeof arg === 'object' ? JSON.stringify(arg) : String(arg)\n ).join(' ');\n }\n \n if (entry.location) {\n line += ` (${entry.location.file}:${entry.location.line}:${entry.location.column})`;\n }\n \n return line;\n }\n\n /**\n * Write to actual file in Node.js environment\n */\n private writeToFileNode(logLine: string): void {\n if (!this.fs) return;\n\n try {\n // Check file size if maxSize is set\n if (this.maxSize) {\n try {\n const stats = this.fs.statSync(this.filename);\n if (stats.size > this.maxSize) {\n // Simple rotation: backup current file and start fresh\n const backupName = `${this.filename}.bak`;\n this.fs.renameSync(this.filename, backupName);\n }\n } catch (error) {\n // File doesn't exist yet, that's fine\n }\n }\n\n // Append to file\n this.fs.appendFileSync(this.filename, logLine + '\\n', 'utf8');\n } catch (error) {\n console.error('FileLogHandler: Failed to write to file:', error);\n }\n }\n\n /**\n * Write to localStorage in browser environment\n */\n private writeToFileLocal(logLine: string): void {\n try {\n const storageKey = `logger_${this.filename}`;\n const existingLogs = localStorage.getItem(storageKey) || '';\n \n let newLogs = existingLogs;\n if (existingLogs.length > 0) {\n newLogs += '\\n';\n }\n newLogs += logLine;\n \n // Simple size management - keep last 1000 lines max\n if (this.maxSize || newLogs.split('\\n').length > 1000) {\n const lines = newLogs.split('\\n');\n const maxLines = this.maxSize ? Math.floor(this.maxSize / 100) : 1000;\n if (lines.length > maxLines) {\n newLogs = lines.slice(-maxLines).join('\\n');\n }\n }\n \n localStorage.setItem(storageKey, newLogs);\n } catch (error) {\n console.error('FileLogHandler: Failed to write to localStorage:', error);\n }\n }\n\n /**\n * Get stored logs (useful for debugging)\n */\n getLogs(): string | null {\n if (isNode && this.fs) {\n try {\n return this.fs.readFileSync(this.filename, 'utf8');\n } catch (error) {\n return null;\n }\n } else if (isBrowser) {\n const storageKey = `logger_${this.filename}`;\n return localStorage.getItem(storageKey);\n }\n return null;\n }\n\n /**\n * Clear stored logs\n */\n clearLogs(): void {\n if (isNode && this.fs) {\n try {\n this.fs.writeFileSync(this.filename, '', 'utf8');\n } catch (error) {\n console.error('FileLogHandler: Failed to clear file:', error);\n }\n } else if (isBrowser) {\n const storageKey = `logger_${this.filename}`;\n localStorage.removeItem(storageKey);\n }\n }\n}","/**\n * @fileoverview Analytics log handler for Advanced Logger\n */\n\nimport type { ILogHandler, LogLevel, LogMetadata } from '../types/index.js';\n\n/**\n * Example custom handler for analytics demonstration\n */\nexport class AnalyticsLogHandler implements ILogHandler {\n handle(level: LogLevel, message: string, _args: any[], metadata: LogMetadata): void {\n // In a real implementation, this could send analytics data\n if (level === 'error' || level === 'critical') {\n // Track errors for analytics\n console.debug('Analytics: Error tracked', { \n level, \n message, \n timestamp: metadata.timestamp \n });\n }\n }\n}","import type { LogLevel, DevToolsTheme } from '../types/core.js';\n\ninterface CacheKey {\n level: LogLevel | 'success';\n theme: DevToolsTheme;\n presetName?: string;\n hasPrefix: boolean;\n hasLocation: boolean;\n}\n\ninterface CacheEntry {\n styles: string[];\n format: string;\n createdAt: number;\n hits: number;\n}\n\nexport interface StyleCacheConfig {\n maxEntries?: number;\n ttl?: number;\n enabled?: boolean;\n}\n\nconst DEFAULT_CONFIG: Required<StyleCacheConfig> = {\n maxEntries: 100,\n ttl: 5 * 60 * 1000,\n enabled: true\n};\n\nexport class StyleCache {\n private cache: Map<string, CacheEntry> = new Map();\n private config: Required<StyleCacheConfig>;\n private hitCount = 0;\n private missCount = 0;\n\n constructor(config: StyleCacheConfig = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n private generateKey(key: CacheKey): string {\n return `${key.level}:${key.theme}:${key.presetName || 'default'}:${key.hasPrefix}:${key.hasLocation}`;\n }\n\n get(key: CacheKey): CacheEntry | null {\n if (!this.config.enabled) return null;\n\n const cacheKey = this.generateKey(key);\n const entry = this.cache.get(cacheKey);\n\n if (!entry) {\n this.missCount++;\n return null;\n }\n\n if (Date.now() - entry.createdAt > this.config.ttl) {\n this.cache.delete(cacheKey);\n this.missCount++;\n return null;\n }\n\n entry.hits++;\n this.cache.delete(cacheKey);\n this.cache.set(cacheKey, entry);\n this.hitCount++;\n\n return entry;\n }\n\n set(key: CacheKey, format: string, styles: string[]): void {\n if (!this.config.enabled) return;\n\n const cacheKey = this.generateKey(key);\n\n if (this.cache.size >= this.config.maxEntries) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n\n this.cache.set(cacheKey, {\n format,\n styles: [...styles],\n createdAt: Date.now(),\n hits: 0\n });\n }\n\n clear(): void {\n this.cache.clear();\n this.hitCount = 0;\n this.missCount = 0;\n }\n\n getStats(): {\n size: number;\n maxSize: number;\n hitRate: number;\n hits: number;\n misses: number;\n } {\n const total = this.hitCount + this.missCount;\n return {\n size: this.cache.size,\n maxSize: this.config.maxEntries,\n hitRate: total > 0 ? this.hitCount / total : 0,\n hits: this.hitCount,\n misses: this.missCount\n };\n }\n\n setEnabled(enabled: boolean): void {\n this.config.enabled = enabled;\n if (!enabled) {\n this.clear();\n }\n }\n\n isEnabled(): boolean {\n return this.config.enabled;\n }\n}\n\nlet _styleCache: StyleCache | null = null;\n\nexport function getStyleCache(): StyleCache {\n if (!_styleCache) {\n _styleCache = new StyleCache();\n }\n return _styleCache;\n}\n","/**\n * @fileoverview Better Logger - Librería completa con todas las características\n * @version 0.3.0\n * @since 2024\n * \n * Punto de entrada principal que proporciona la experiencia completa de Better Logger\n * con características avanzadas incluyendo estilos CSS, soporte SVG, animaciones,\n * capacidades de exportación y logging remoto.\n * \n * @module @mks2508/better-logger\n */\n\n// Main Logger class with all features\nimport { Logger } from './Logger.js';\nimport type {\n LogLevel,\n Verbosity,\n ThemeVariant,\n BannerType,\n StyleOptions,\n ILogHandler\n} from './types/index.js';\n\n// Lazy singleton - se inicializa solo cuando se necesita\nlet _logger: Logger | null = null;\n\nfunction getLogger(): Logger {\n if (!_logger) {\n _logger = new Logger();\n }\n return _logger;\n}\n\n/**\n * Clase principal Logger con conjunto completo de características\n * \n * @example\n * // Importación y uso básico\n * import { Logger } from '@mks2508/better-logger';\n * \n * const logger = new Logger();\n * logger.preset('cyberpunk'); // Aplicar preset completo\n * logger.info('¡Hola mundo!');\n * \n * @example\n * // Logger con scope para componentes\n * const auth = logger.component('Auth');\n * auth.info('Usuario autenticando...');\n * auth.success('Login exitoso');\n * \n * @example\n * // Logger para APIs con badges\n * const api = logger.api('GraphQL');\n * api.badges(['v2', 'cached']).info('Query ejecutada');\n * \n * @since 0.3.0\n */\nexport { Logger };\n\n/**\n * Instancia singleton del logger lista para usar\n * @default\n * \n * @example\n * // Uso directo sin crear instancia\n * import logger from '@mks2508/better-logger';\n * \n * logger.info('Aplicación iniciada');\n * logger.success('Conexión establecida');\n * logger.warn('Memoria al 80%');\n * logger.error('Fallo en conexión');\n */\nexport default getLogger();\n\n/**\n * Métodos de logging individuales (enlazados al singleton)\n * \n * @example\n * // Importar solo los métodos necesarios\n * import { info, error, success } from '@mks2508/better-logger';\n * \n * info('Proceso iniciado');\n * success('✓ Completado exitosamente');\n * error('Error:', errorDetails);\n * \n * @since 0.3.0\n */\nexport const debug = (...args: any[]) => getLogger().debug(...args);\nexport const info = (...args: any[]) => getLogger().info(...args);\nexport const warn = (...args: any[]) => getLogger().warn(...args);\nexport const error = (...args: any[]) => getLogger().error(...args);\nexport const success = (...args: any[]) => getLogger().success(...args);\nexport const critical = (...args: any[]) => getLogger().critical(...args);\nexport const trace = (...args: any[]) => getLogger().trace(...args);\nexport const table = (data: any, columns?: string[]) => getLogger().table(data, columns);\nexport const group = (label: string, collapsed?: boolean) => getLogger().group(label, collapsed);\nexport const groupEnd = () => getLogger().groupEnd();\nexport const time = (label: string) => getLogger().time(label);\nexport const timeEnd = (label: string) => getLogger().timeEnd(label);\nexport const setGlobalPrefix = (prefix: string) => getLogger().setGlobalPrefix(prefix);\nexport const scope = (name: string) => getLogger().scope(name);\nexport const component = (name: string) => getLogger().component(name);\nexport const api = (name: string) => getLogger().api(name);\nexport const badges = (badgeList: string[]) => getLogger().badges(badgeList);\nexport const badge = (badgeName: string) => getLogger().badge(badgeName);\nexport const clearBadges = () => getLogger().clearBadges();\nexport const setVerbosity = (level: Verbosity) => getLogger().setVerbosity(level);\nexport const addHandler = (handler: ILogHandler) => getLogger().addHandler(handler);\nexport const setTheme = (theme: ThemeVariant) => getLogger().setTheme(theme);\nexport const setBannerType = (bannerType: BannerType) => getLogger().setBannerType(bannerType);\nexport const showBanner = (bannerType?: BannerType) => getLogger().showBanner(bannerType);\nexport const logWithSVG = (message: string, svgContent?: string, options?: StyleOptions) => \n getLogger().logWithSVG(message, svgContent, options);\nexport const logAnimated = (message: string, duration?: number) => \n getLogger().logAnimated(message, duration);\nexport const cli = (command: string) => getLogger().cli(command);\n\n// Type exports\nexport type {\n LogLevel,\n Verbosity,\n ThemeVariant,\n BannerType,\n StyleOptions,\n ILogHandler,\n LoggerConfig,\n LogMetadata,\n StackInfo,\n TimerEntry,\n TimerResult,\n OutputFormat,\n IScopedLogger,\n IAPILogger,\n IComponentLogger,\n Bindings,\n SerializerFn,\n SerializerContext,\n SerializerConfig,\n ISerializerRegistry,\n HookLogEntry,\n HookEvent,\n HookCallback,\n MiddlewareFn,\n IHookManager,\n TransportRecord,\n TransportOptions,\n TransportTarget,\n ITransport,\n StyleCacheConfig\n} from './types/index.js';\n\n// Styling utilities\nexport { \n StyleBuilder,\n StylePresets,\n THEME_PRESETS,\n THEME_BANNERS,\n BANNER_VARIANTS\n} from './styling/index.js';\n\n// Handler exports\nexport {\n FileLogHandler,\n RemoteLogHandler,\n AnalyticsLogHandler\n} from './handlers/index.js';\n\n// Serializers\nexport { SerializerRegistry } from './serializers/index.js';\n\n// Hooks & Middleware\nexport { HookManager } from './hooks/index.js';\n\n// Transports\nexport {\n TransportManager,\n ConsoleTransport,\n FileTransport,\n HttpTransport\n} from './transports/index.js';\n\n// Style Cache\nexport { StyleCache, getStyleCache } from './styling/StyleCache.js';\n\n// Enterprise feature function exports\nimport type { SerializerFn, HookEvent, HookCallback, MiddlewareFn, TransportTarget } from './types/index.js';\nexport const addSerializer = <T>(\n type: new (...args: any[]) => T,\n serializer: SerializerFn<T>,\n priority?: number\n) => getLogger().addSerializer(type, serializer, priority);\nexport const removeSerializer = <T>(type: new (...args: any[]) => T) =>\n getLogger().removeSerializer(type);\nexport const on = (event: HookEvent, callback: HookCallback, priority?: number) =>\n getLogger().on(event, callback, priority);\nexport const once = (event: HookEvent, callback: HookCallback, priority?: number) =>\n getLogger().once(event, callback, priority);\nexport const off = (event: HookEvent, callback: HookCallback) =>\n getLogger().off(event, callback);\nexport const use = (middleware: MiddlewareFn, priority?: number) =>\n getLogger().use(middleware, priority);\nexport const addTransport = (target: TransportTarget) =>\n getLogger().addTransport(target);\nexport const removeTransport = (id: string) =>\n getLogger().removeTransport(id);\nexport const flushTransports = () =>\n getLogger().flushTransports();\nexport const closeTransports = () =>\n getLogger().closeTransports();\n\n// Scoped loggers\nexport {\n ScopedLogger,\n APILogger,\n ComponentLogger,\n ContextLogger\n} from './ScopedLogger.js';\n\n// Constants\nexport { DEFAULT_CONFIG } from './constants.js';\n\n// Utility exports\nexport {\n parseStackTrace,\n formatTimestamp,\n detectOptimalFormat,\n createOutput,\n createANSIOutput,\n createBuildOutput,\n createCIOutput\n} from './utils/index.js';\n\n// ANSI color utilities\nexport {\n ansiStyle,\n ansiColor,\n ansiBackground,\n ansiBold,\n ansiDim,\n ansiUnderline,\n formatLogLevelANSI,\n formatSuccessANSI,\n BUILD_FORMATTERS,\n sanitizeEmojis\n} from './utils/ansi-colors.js';\n\n// Environment detection and presets\nexport {\n BUILD_PRESETS,\n ENVIRONMENT_DETECTION,\n detectEnvironmentPreset,\n getOptimalConfig\n} from './constants.js';\n\n/**\n * Utilidades de estilo para crear estilos personalizados de consola\n * \n * @example\n * // Crear estilo personalizado\n * import { createStyle, stylePresets } from '@mks2508/better-logger';\n * \n * const miEstilo = createStyle()\n * .bg('linear-gradient(45deg, #ff6b6b, #feca57)')\n * .color('white')\n * .padding('10px')\n * .rounded('8px')\n * .bold()\n * .build();\n * \n * console.log('%cMensaje estilizado', miEstilo);\n * \n * @example\n * // Usar presets predefinidos\n * console.log('%cÉxito!', stylePresets.success);\n * console.log('%cError!', stylePresets.error);\n * \n * @since 0.3.0\n */\nimport { StyleBuilder, StylePresets } from './styling/index.js';\n\n/**\n * Crea una nueva instancia de StyleBuilder para estilos personalizados de consola\n * \n * @returns {StyleBuilder} Constructor de estilos encadenable\n * \n * @example\n * const estilo = createStyle()\n * .gradient('#667eea', '#764ba2')\n * .color('white')\n * .padding('8px 16px')\n * .rounded('4px')\n * .shadow('0 2px 4px rgba(0,0,0,0.2)')\n * .build();\n * \n * @since 0.3.0\n */\nexport const createStyle = () => new StyleBuilder();\n\n/**\n * Presets de estilo predefinidos para casos de uso comunes\n * \n * @constant {Object} stylePresets\n * \n * @example\n * console.log('%cOperación exitosa', stylePresets.success);\n * console.log('%cAdvertencia', stylePresets.warning);\n * console.log('%cError crítico', stylePresets.error);\n * console.log('%cInformación', stylePresets.info);\n * console.log('%cDestacado', stylePresets.accent);\n * \n * @since 0.3.0\n */\nexport const stylePresets = {\n success: StylePresets.success().build(),\n error: StylePresets.error().build(),\n warning: StylePresets.warning().build(),\n info: StylePresets.info().build(),\n accent: StylePresets.accent().build(),\n};"],"names":["error","StyleBuilder","StylePresets"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/transports/ConsoleTransport.ts","../src/transports/FileTransport.ts","../src/transports/HttpTransport.ts","../src/handlers/FileLogHandler.ts","../src/handlers/AnalyticsLogHandler.ts","../src/styling/StyleCache.ts","../src/terminal/formatter.ts","../src/index.ts"],"sourcesContent":["import type { TransportRecord, TransportOptions, ITransport, LogLevel } from '../types/index.js';\n\nexport class ConsoleTransport implements ITransport {\n readonly name = 'console';\n\n constructor(private options?: TransportOptions) {}\n\n write(record: TransportRecord): void {\n const method = this.getConsoleMethod(record.level);\n const prefix = record.prefix ? `[${record.prefix}] ` : '';\n const location = record.location\n ? ` (${record.location.file}:${record.location.line})`\n : '';\n\n console[method](`[${record.level.toUpperCase()}]${prefix} ${record.msg}${location}`);\n }\n\n private getConsoleMethod(level: LogLevel): 'log' | 'info' | 'warn' | 'error' {\n switch (level) {\n case 'debug': return 'log';\n case 'info': return 'info';\n case 'warn': return 'warn';\n case 'error':\n case 'critical': return 'error';\n default: return 'log';\n }\n }\n}\n","import type { TransportRecord, TransportOptions, ITransport } from '../types/index.js';\n\nexport interface FileTransportOptions extends TransportOptions {\n destination?: string;\n}\n\nexport class FileTransport implements ITransport {\n readonly name = 'file';\n private buffer: string[] = [];\n private flushTimer?: ReturnType<typeof setInterval>;\n private options: FileTransportOptions;\n\n constructor(options?: FileTransportOptions) {\n this.options = options || {};\n\n if (this.options.flushInterval) {\n this.flushTimer = setInterval(() => this.flush(), this.options.flushInterval);\n }\n }\n\n write(record: TransportRecord): void {\n const line = JSON.stringify(record) + '\\n';\n this.buffer.push(line);\n\n if (this.buffer.length >= (this.options.batchSize || 100)) {\n this.flush();\n }\n }\n\n async flush(): Promise<void> {\n if (this.buffer.length === 0) return;\n\n const lines = this.buffer.join('');\n this.buffer = [];\n\n if (typeof globalThis.process !== 'undefined' && typeof require === 'function') {\n try {\n const fs = require('fs');\n const dest = this.options.destination || 'app.log';\n fs.appendFileSync(dest, lines);\n } catch {\n // Silent fail in browser or if fs not available\n }\n }\n }\n\n close(): void {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n }\n this.flush();\n }\n}\n","import type { TransportRecord, TransportOptions, ITransport } from '../types/index.js';\n\nexport interface HttpTransportOptions extends TransportOptions {\n url?: string;\n headers?: Record<string, string>;\n}\n\nexport class HttpTransport implements ITransport {\n readonly name = 'http';\n private buffer: TransportRecord[] = [];\n private flushTimer?: ReturnType<typeof setInterval>;\n private options: HttpTransportOptions;\n\n constructor(options?: HttpTransportOptions) {\n this.options = options || {};\n\n if (this.options.flushInterval) {\n this.flushTimer = setInterval(() => this.flush(), this.options.flushInterval);\n }\n }\n\n write(record: TransportRecord): void {\n this.buffer.push(record);\n\n if (this.buffer.length >= (this.options.batchSize || 50)) {\n this.flush();\n }\n }\n\n async flush(): Promise<void> {\n if (this.buffer.length === 0 || !this.options.url) return;\n\n const records = [...this.buffer];\n this.buffer = [];\n\n try {\n await fetch(this.options.url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...this.options.headers\n },\n body: JSON.stringify({ logs: records })\n });\n } catch {\n this.buffer.unshift(...records);\n }\n }\n\n close(): void {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n }\n this.flush();\n }\n}\n","/**\n * @fileoverview File-based log handler for Advanced Logger\n */\n\nimport type { ILogHandler, LogLevel, LogMetadata } from '../types/index.js';\nimport { isNode, isBrowser } from '../utils/environment.js';\nimport { safeSerialize } from '../utils/formatting.js';\n\n/**\n * Universal file-based log handler for persistent logging\n * Works in both Node.js (real files) and browser (localStorage)\n */\nexport class FileLogHandler implements ILogHandler {\n private filename: string;\n private maxSize?: number;\n private fs?: any; // Node.js fs module\n\n constructor(filename: string = 'app.log', maxSize?: number) {\n this.filename = filename;\n this.maxSize = maxSize;\n \n // Load Node.js fs module if in Node environment\n if (isNode) {\n try {\n this.fs = require('fs');\n } catch (error) {\n console.warn('FileLogHandler: Unable to load fs module:', error);\n }\n }\n }\n\n handle(level: LogLevel, message: string, args: any[], metadata: LogMetadata): void {\n const logEntry = {\n timestamp: metadata.timestamp,\n level: level.toUpperCase(),\n prefix: metadata.prefix,\n message,\n args: args.slice(1).map(arg => safeSerialize(arg)),\n location: metadata.stackInfo,\n };\n\n const logLine = this.formatLogLine(logEntry);\n\n if (isNode && this.fs) {\n this.writeToFileNode(logLine);\n } else if (isBrowser) {\n this.writeToFileLocal(logLine);\n } else {\n // Fallback - just console output\n console.log(`[FILE-LOG] ${logLine}`);\n }\n }\n\n /**\n * Format log entry as a single line for file storage\n */\n private formatLogLine(entry: any): string {\n const parts = [\n entry.timestamp,\n `[${entry.level}]`,\n entry.prefix ? `[${entry.prefix}]` : '',\n entry.message\n ].filter(Boolean);\n\n let line = parts.join(' ');\n \n if (entry.args && entry.args.length > 0) {\n line += ' ' + entry.args.map((arg: any) => \n typeof arg === 'object' ? JSON.stringify(arg) : String(arg)\n ).join(' ');\n }\n \n if (entry.location) {\n line += ` (${entry.location.file}:${entry.location.line}:${entry.location.column})`;\n }\n \n return line;\n }\n\n /**\n * Write to actual file in Node.js environment\n */\n private writeToFileNode(logLine: string): void {\n if (!this.fs) return;\n\n try {\n // Check file size if maxSize is set\n if (this.maxSize) {\n try {\n const stats = this.fs.statSync(this.filename);\n if (stats.size > this.maxSize) {\n // Simple rotation: backup current file and start fresh\n const backupName = `${this.filename}.bak`;\n this.fs.renameSync(this.filename, backupName);\n }\n } catch (error) {\n // File doesn't exist yet, that's fine\n }\n }\n\n // Append to file\n this.fs.appendFileSync(this.filename, logLine + '\\n', 'utf8');\n } catch (error) {\n console.error('FileLogHandler: Failed to write to file:', error);\n }\n }\n\n /**\n * Write to localStorage in browser environment\n */\n private writeToFileLocal(logLine: string): void {\n try {\n const storageKey = `logger_${this.filename}`;\n const existingLogs = localStorage.getItem(storageKey) || '';\n \n let newLogs = existingLogs;\n if (existingLogs.length > 0) {\n newLogs += '\\n';\n }\n newLogs += logLine;\n \n // Simple size management - keep last 1000 lines max\n if (this.maxSize || newLogs.split('\\n').length > 1000) {\n const lines = newLogs.split('\\n');\n const maxLines = this.maxSize ? Math.floor(this.maxSize / 100) : 1000;\n if (lines.length > maxLines) {\n newLogs = lines.slice(-maxLines).join('\\n');\n }\n }\n \n localStorage.setItem(storageKey, newLogs);\n } catch (error) {\n console.error('FileLogHandler: Failed to write to localStorage:', error);\n }\n }\n\n /**\n * Get stored logs (useful for debugging)\n */\n getLogs(): string | null {\n if (isNode && this.fs) {\n try {\n return this.fs.readFileSync(this.filename, 'utf8');\n } catch (error) {\n return null;\n }\n } else if (isBrowser) {\n const storageKey = `logger_${this.filename}`;\n return localStorage.getItem(storageKey);\n }\n return null;\n }\n\n /**\n * Clear stored logs\n */\n clearLogs(): void {\n if (isNode && this.fs) {\n try {\n this.fs.writeFileSync(this.filename, '', 'utf8');\n } catch (error) {\n console.error('FileLogHandler: Failed to clear file:', error);\n }\n } else if (isBrowser) {\n const storageKey = `logger_${this.filename}`;\n localStorage.removeItem(storageKey);\n }\n }\n}","/**\n * @fileoverview Analytics log handler for Advanced Logger\n */\n\nimport type { ILogHandler, LogLevel, LogMetadata } from '../types/index.js';\n\n/**\n * Example custom handler for analytics demonstration\n */\nexport class AnalyticsLogHandler implements ILogHandler {\n handle(level: LogLevel, message: string, _args: any[], metadata: LogMetadata): void {\n // In a real implementation, this could send analytics data\n if (level === 'error' || level === 'critical') {\n // Track errors for analytics\n console.debug('Analytics: Error tracked', { \n level, \n message, \n timestamp: metadata.timestamp \n });\n }\n }\n}","import type { LogLevel, DevToolsTheme } from '../types/core.js';\n\ninterface CacheKey {\n level: LogLevel | 'success';\n theme: DevToolsTheme;\n presetName?: string;\n hasPrefix: boolean;\n hasLocation: boolean;\n}\n\ninterface CacheEntry {\n styles: string[];\n format: string;\n createdAt: number;\n hits: number;\n}\n\nexport interface StyleCacheConfig {\n maxEntries?: number;\n ttl?: number;\n enabled?: boolean;\n}\n\nconst DEFAULT_CONFIG: Required<StyleCacheConfig> = {\n maxEntries: 100,\n ttl: 5 * 60 * 1000,\n enabled: true\n};\n\nexport class StyleCache {\n private cache: Map<string, CacheEntry> = new Map();\n private config: Required<StyleCacheConfig>;\n private hitCount = 0;\n private missCount = 0;\n\n constructor(config: StyleCacheConfig = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n private generateKey(key: CacheKey): string {\n return `${key.level}:${key.theme}:${key.presetName || 'default'}:${key.hasPrefix}:${key.hasLocation}`;\n }\n\n get(key: CacheKey): CacheEntry | null {\n if (!this.config.enabled) return null;\n\n const cacheKey = this.generateKey(key);\n const entry = this.cache.get(cacheKey);\n\n if (!entry) {\n this.missCount++;\n return null;\n }\n\n if (Date.now() - entry.createdAt > this.config.ttl) {\n this.cache.delete(cacheKey);\n this.missCount++;\n return null;\n }\n\n entry.hits++;\n this.cache.delete(cacheKey);\n this.cache.set(cacheKey, entry);\n this.hitCount++;\n\n return entry;\n }\n\n set(key: CacheKey, format: string, styles: string[]): void {\n if (!this.config.enabled) return;\n\n const cacheKey = this.generateKey(key);\n\n if (this.cache.size >= this.config.maxEntries) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n\n this.cache.set(cacheKey, {\n format,\n styles: [...styles],\n createdAt: Date.now(),\n hits: 0\n });\n }\n\n clear(): void {\n this.cache.clear();\n this.hitCount = 0;\n this.missCount = 0;\n }\n\n getStats(): {\n size: number;\n maxSize: number;\n hitRate: number;\n hits: number;\n misses: number;\n } {\n const total = this.hitCount + this.missCount;\n return {\n size: this.cache.size,\n maxSize: this.config.maxEntries,\n hitRate: total > 0 ? this.hitCount / total : 0,\n hits: this.hitCount,\n misses: this.missCount\n };\n }\n\n setEnabled(enabled: boolean): void {\n this.config.enabled = enabled;\n if (!enabled) {\n this.clear();\n }\n }\n\n isEnabled(): boolean {\n return this.config.enabled;\n }\n}\n\nlet _styleCache: StyleCache | null = null;\n\nexport function getStyleCache(): StyleCache {\n if (!_styleCache) {\n _styleCache = new StyleCache();\n }\n return _styleCache;\n}\n","/**\n * Terminal Formatter - Alignment, key-value, and advanced terminal formatting\n */\n\nimport { getTerminalWidth } from '../utils/environment-detector.js';\nimport { getANSIForeground, ANSI, type ColorCapability } from './color-converter.js';\nimport type { ColumnConfig, ColumnAlign, BadgeStyle, TimestampFormat, LogOptions } from '../types/index.js';\n\nexport function stripAnsi(str: string): string {\n return str.replace(/\\x1b\\[[0-9;]*m/g, '');\n}\n\nexport function getVisibleLength(str: string): number {\n return stripAnsi(str).length;\n}\n\nexport function padToWidth(str: string, width: number, align: ColumnAlign = 'left'): string {\n const visibleLen = getVisibleLength(str);\n if (visibleLen >= width) return str;\n\n const padding = width - visibleLen;\n\n switch (align) {\n case 'right':\n return ' '.repeat(padding) + str;\n case 'center':\n const leftPad = Math.floor(padding / 2);\n const rightPad = padding - leftPad;\n return ' '.repeat(leftPad) + str + ' '.repeat(rightPad);\n case 'left':\n default:\n return str + ' '.repeat(padding);\n }\n}\n\nexport function formatWithRightAlign(\n leftContent: string,\n rightContent: string,\n maxWidth?: number\n): string {\n const width = maxWidth ?? getTerminalWidth();\n const leftLen = getVisibleLength(leftContent);\n const rightLen = getVisibleLength(rightContent);\n\n const gap = width - leftLen - rightLen;\n if (gap <= 1) {\n return `${leftContent} ${rightContent}`;\n }\n\n return `${leftContent}${' '.repeat(gap)}${rightContent}`;\n}\n\nexport function formatColumns(\n columns: ColumnConfig[],\n maxWidth?: number,\n colorCapability: ColorCapability = 'full'\n): string {\n const width = maxWidth ?? getTerminalWidth();\n const totalColumns = columns.length;\n\n const columnsWithWidths = columns.map((col, idx) => {\n if (col.width) return { ...col, calculatedWidth: col.width };\n\n const remainingWidth = width - columns\n .filter((c, i) => i !== idx && c.width)\n .reduce((sum, c) => sum + (c.width ?? 0), 0);\n\n const autoColumns = columns.filter(c => !c.width).length;\n const calculatedWidth = Math.floor(remainingWidth / autoColumns);\n\n return { ...col, calculatedWidth };\n });\n\n return columnsWithWidths.map(col => {\n let content = col.content;\n\n if (col.color && colorCapability !== 'none') {\n const colorCode = getANSIForeground(col.color, colorCapability);\n content = `${colorCode}${content}${ANSI.reset}`;\n }\n\n return padToWidth(content, col.calculatedWidth, col.align);\n }).join('');\n}\n\nexport function formatKeyValue(\n obj: Record<string, unknown>,\n colorCapability: ColorCapability = 'full',\n options: { separator?: string; keyColor?: string; valueColor?: string } = {}\n): string {\n const {\n separator = ' ',\n keyColor = '#888888',\n valueColor = '#00ffff'\n } = options;\n\n const entries = Object.entries(obj);\n if (entries.length === 0) return '';\n\n const keyColorCode = colorCapability !== 'none'\n ? getANSIForeground(keyColor, colorCapability)\n : '';\n const valueColorCode = colorCapability !== 'none'\n ? getANSIForeground(valueColor, colorCapability)\n : '';\n const reset = colorCapability !== 'none' ? ANSI.reset : '';\n\n return entries\n .map(([key, value]) => {\n const valueStr = typeof value === 'object'\n ? JSON.stringify(value)\n : String(value);\n return `${keyColorCode}${key}:${reset} ${valueColorCode}${valueStr}${reset}`;\n })\n .join(separator);\n}\n\nexport function isKeyValueObject(obj: unknown): obj is Record<string, unknown> {\n if (typeof obj !== 'object' || obj === null) return false;\n if (Array.isArray(obj)) return false;\n\n const proto = Object.getPrototypeOf(obj);\n if (proto !== Object.prototype && proto !== null) return false;\n\n const values = Object.values(obj);\n return values.every(v =>\n typeof v === 'string' ||\n typeof v === 'number' ||\n typeof v === 'boolean' ||\n v === null\n );\n}\n\nexport function formatBadge(\n badge: string,\n style: BadgeStyle = 'brackets',\n colorCapability: ColorCapability = 'full',\n color?: string\n): string {\n const colorCode = color && colorCapability !== 'none'\n ? getANSIForeground(color, colorCapability)\n : '';\n const reset = colorCapability !== 'none' ? ANSI.reset : '';\n const bgBlack = colorCapability !== 'none' ? ANSI.bg.black : '';\n\n const text = badge.toUpperCase();\n\n switch (style) {\n case 'rounded':\n return `${bgBlack}${colorCode}⟨${text}⟩${reset}`;\n case 'plain':\n return `${colorCode}${text}${reset}`;\n case 'unicode':\n return `${bgBlack}${colorCode}╭${text}╮${reset}`;\n case 'pill':\n return `${bgBlack}${colorCode}⦗${text}⦘${reset}`;\n case 'brackets':\n default:\n return `${bgBlack}${colorCode}[${text}]${reset}`;\n }\n}\n\nexport function formatTimestamp(\n date: Date = new Date(),\n format: TimestampFormat = 'time'\n): string {\n switch (format) {\n case 'iso':\n return date.toISOString();\n case 'date':\n return date.toISOString().split('T')[0] ?? '';\n case 'time':\n return date.toTimeString().slice(0, 8);\n case 'timeMs':\n return date.toTimeString().slice(0, 8) + '.' +\n String(date.getMilliseconds()).padStart(3, '0');\n case 'relative':\n return formatRelativeTime(date);\n case 'elapsed':\n return formatElapsedTime(date);\n case 'custom':\n default:\n return date.toLocaleTimeString();\n }\n}\n\nlet startTime: number | null = null;\n\nexport function formatRelativeTime(date: Date): string {\n if (startTime === null) {\n startTime = Date.now();\n }\n\n const diff = date.getTime() - startTime;\n\n if (diff < 1000) {\n return `+${diff}ms`;\n } else if (diff < 60000) {\n return `+${(diff / 1000).toFixed(1)}s`;\n } else {\n const mins = Math.floor(diff / 60000);\n const secs = Math.floor((diff % 60000) / 1000);\n return `+${mins}m${secs}s`;\n }\n}\n\nexport function formatElapsedTime(date: Date): string {\n if (startTime === null) {\n startTime = Date.now();\n }\n\n const diff = date.getTime() - startTime;\n const hours = Math.floor(diff / 3600000);\n const mins = Math.floor((diff % 3600000) / 60000);\n const secs = Math.floor((diff % 60000) / 1000);\n\n return `${String(hours).padStart(2, '0')}:${String(mins).padStart(2, '0')}:${String(secs).padStart(2, '0')}`;\n}\n\nexport function resetStartTime(): void {\n startTime = Date.now();\n}\n\nexport function applyLogOptions(\n message: string,\n options: LogOptions,\n colorCapability: ColorCapability = 'full'\n): string {\n let result = message;\n\n if (options.rightAlign) {\n result = formatWithRightAlign(message, options.rightAlign);\n }\n\n return result;\n}\n","/**\n * @fileoverview Better Logger - Librería completa con todas las características\n * @version 0.3.0\n * @since 2024\n * \n * Punto de entrada principal que proporciona la experiencia completa de Better Logger\n * con características avanzadas incluyendo estilos CSS, soporte SVG, animaciones,\n * capacidades de exportación y logging remoto.\n * \n * @module @mks2508/better-logger\n */\n\n// Main Logger class with all features\nimport { Logger } from './Logger.js';\nimport type {\n LogLevel,\n Verbosity,\n ThemeVariant,\n BannerType,\n StyleOptions,\n ILogHandler\n} from './types/index.js';\n\n// Lazy singleton - se inicializa solo cuando se necesita\nlet _logger: Logger | null = null;\n\nfunction getLogger(): Logger {\n if (!_logger) {\n _logger = new Logger();\n }\n return _logger;\n}\n\n/**\n * Clase principal Logger con conjunto completo de características\n * \n * @example\n * // Importación y uso básico\n * import { Logger } from '@mks2508/better-logger';\n * \n * const logger = new Logger();\n * logger.preset('cyberpunk'); // Aplicar preset completo\n * logger.info('¡Hola mundo!');\n * \n * @example\n * // Logger con scope para componentes\n * const auth = logger.component('Auth');\n * auth.info('Usuario autenticando...');\n * auth.success('Login exitoso');\n * \n * @example\n * // Logger para APIs con badges\n * const api = logger.api('GraphQL');\n * api.badges(['v2', 'cached']).info('Query ejecutada');\n * \n * @since 0.3.0\n */\nexport { Logger };\n\n/**\n * Instancia singleton del logger lista para usar\n * @default\n * \n * @example\n * // Uso directo sin crear instancia\n * import logger from '@mks2508/better-logger';\n * \n * logger.info('Aplicación iniciada');\n * logger.success('Conexión establecida');\n * logger.warn('Memoria al 80%');\n * logger.error('Fallo en conexión');\n */\nexport default getLogger();\n\n/**\n * Métodos de logging individuales (enlazados al singleton)\n * \n * @example\n * // Importar solo los métodos necesarios\n * import { info, error, success } from '@mks2508/better-logger';\n * \n * info('Proceso iniciado');\n * success('✓ Completado exitosamente');\n * error('Error:', errorDetails);\n * \n * @since 0.3.0\n */\nexport const debug = (...args: any[]) => getLogger().debug(...args);\nexport const info = (...args: any[]) => getLogger().info(...args);\nexport const warn = (...args: any[]) => getLogger().warn(...args);\nexport const error = (...args: any[]) => getLogger().error(...args);\nexport const success = (...args: any[]) => getLogger().success(...args);\nexport const critical = (...args: any[]) => getLogger().critical(...args);\nexport const trace = (...args: any[]) => getLogger().trace(...args);\nexport const table = (data: any, columns?: string[]) => getLogger().table(data, columns);\nexport const group = (label: string, collapsed?: boolean) => getLogger().group(label, collapsed);\nexport const groupEnd = () => getLogger().groupEnd();\nexport const time = (label: string) => getLogger().time(label);\nexport const timeEnd = (label: string) => getLogger().timeEnd(label);\nexport const setGlobalPrefix = (prefix: string) => getLogger().setGlobalPrefix(prefix);\nexport const scope = (name: string) => getLogger().scope(name);\nexport const component = (name: string) => getLogger().component(name);\nexport const api = (name: string) => getLogger().api(name);\nexport const badges = (badgeList: string[]) => getLogger().badges(badgeList);\nexport const badge = (badgeName: string) => getLogger().badge(badgeName);\nexport const clearBadges = () => getLogger().clearBadges();\nexport const setVerbosity = (level: Verbosity) => getLogger().setVerbosity(level);\nexport const addHandler = (handler: ILogHandler) => getLogger().addHandler(handler);\nexport const setTheme = (theme: ThemeVariant) => getLogger().setTheme(theme);\nexport const setBannerType = (bannerType: BannerType) => getLogger().setBannerType(bannerType);\nexport const showBanner = (bannerType?: BannerType) => getLogger().showBanner(bannerType);\nexport const logWithSVG = (message: string, svgContent?: string, options?: StyleOptions) => \n getLogger().logWithSVG(message, svgContent, options);\nexport const logAnimated = (message: string, duration?: number) => \n getLogger().logAnimated(message, duration);\nexport const cli = (command: string) => getLogger().cli(command);\n\n// Type exports\nexport type {\n LogLevel,\n Verbosity,\n ThemeVariant,\n BannerType,\n StyleOptions,\n ILogHandler,\n LoggerConfig,\n LogMetadata,\n StackInfo,\n TimerEntry,\n TimerResult,\n OutputFormat,\n IScopedLogger,\n IAPILogger,\n IComponentLogger,\n Bindings,\n SerializerFn,\n SerializerContext,\n SerializerConfig,\n ISerializerRegistry,\n HookLogEntry,\n HookEvent,\n HookCallback,\n MiddlewareFn,\n IHookManager,\n TransportRecord,\n TransportOptions,\n TransportTarget,\n ITransport,\n StyleCacheConfig,\n BadgeStyle,\n TimestampFormat,\n ColumnAlign,\n ColumnConfig,\n LogOptions,\n} from './types/index.js';\n\n// Styling utilities\nexport { \n StyleBuilder,\n StylePresets,\n THEME_PRESETS,\n THEME_BANNERS,\n BANNER_VARIANTS\n} from './styling/index.js';\n\n// Handler exports\nexport {\n FileLogHandler,\n RemoteLogHandler,\n AnalyticsLogHandler\n} from './handlers/index.js';\n\n// Serializers\nexport { SerializerRegistry } from './serializers/index.js';\n\n// Hooks & Middleware\nexport { HookManager } from './hooks/index.js';\n\n// Transports\nexport {\n TransportManager,\n ConsoleTransport,\n FileTransport,\n HttpTransport\n} from './transports/index.js';\n\n// Style Cache\nexport { StyleCache, getStyleCache } from './styling/StyleCache.js';\n\n// Enterprise feature function exports\nimport type { SerializerFn, HookEvent, HookCallback, MiddlewareFn, TransportTarget } from './types/index.js';\nexport const addSerializer = <T>(\n type: new (...args: any[]) => T,\n serializer: SerializerFn<T>,\n priority?: number\n) => getLogger().addSerializer(type, serializer, priority);\nexport const removeSerializer = <T>(type: new (...args: any[]) => T) =>\n getLogger().removeSerializer(type);\nexport const on = (event: HookEvent, callback: HookCallback, priority?: number) =>\n getLogger().on(event, callback, priority);\nexport const once = (event: HookEvent, callback: HookCallback, priority?: number) =>\n getLogger().once(event, callback, priority);\nexport const off = (event: HookEvent, callback: HookCallback) =>\n getLogger().off(event, callback);\nexport const use = (middleware: MiddlewareFn, priority?: number) =>\n getLogger().use(middleware, priority);\nexport const addTransport = (target: TransportTarget) =>\n getLogger().addTransport(target);\nexport const removeTransport = (id: string) =>\n getLogger().removeTransport(id);\nexport const flushTransports = () =>\n getLogger().flushTransports();\nexport const closeTransports = () =>\n getLogger().closeTransports();\n\n// Scoped loggers\nexport {\n ScopedLogger,\n APILogger,\n ComponentLogger,\n ContextLogger\n} from './ScopedLogger.js';\n\n// Constants\nexport { DEFAULT_CONFIG } from './constants.js';\n\n// Utility exports\nexport {\n parseStackTrace,\n formatTimestamp,\n detectOptimalFormat,\n createOutput,\n createANSIOutput,\n createBuildOutput,\n createCIOutput\n} from './utils/index.js';\n\n// ANSI color utilities\nexport {\n ansiStyle,\n ansiColor,\n ansiBackground,\n ansiBold,\n ansiDim,\n ansiUnderline,\n formatLogLevelANSI,\n formatSuccessANSI,\n BUILD_FORMATTERS,\n sanitizeEmojis\n} from './utils/ansi-colors.js';\n\n// Environment detection and presets\nexport {\n BUILD_PRESETS,\n ENVIRONMENT_DETECTION,\n detectEnvironmentPreset,\n getOptimalConfig\n} from './constants.js';\n\n/**\n * Utilidades de estilo para crear estilos personalizados de consola\n * \n * @example\n * // Crear estilo personalizado\n * import { createStyle, stylePresets } from '@mks2508/better-logger';\n * \n * const miEstilo = createStyle()\n * .bg('linear-gradient(45deg, #ff6b6b, #feca57)')\n * .color('white')\n * .padding('10px')\n * .rounded('8px')\n * .bold()\n * .build();\n * \n * console.log('%cMensaje estilizado', miEstilo);\n * \n * @example\n * // Usar presets predefinidos\n * console.log('%cÉxito!', stylePresets.success);\n * console.log('%cError!', stylePresets.error);\n * \n * @since 0.3.0\n */\nimport { StyleBuilder, StylePresets } from './styling/index.js';\n\n/**\n * Crea una nueva instancia de StyleBuilder para estilos personalizados de consola\n * \n * @returns {StyleBuilder} Constructor de estilos encadenable\n * \n * @example\n * const estilo = createStyle()\n * .gradient('#667eea', '#764ba2')\n * .color('white')\n * .padding('8px 16px')\n * .rounded('4px')\n * .shadow('0 2px 4px rgba(0,0,0,0.2)')\n * .build();\n * \n * @since 0.3.0\n */\nexport const createStyle = () => new StyleBuilder();\n\n/**\n * Presets de estilo predefinidos para casos de uso comunes\n * \n * @constant {Object} stylePresets\n * \n * @example\n * console.log('%cOperación exitosa', stylePresets.success);\n * console.log('%cAdvertencia', stylePresets.warning);\n * console.log('%cError crítico', stylePresets.error);\n * console.log('%cInformación', stylePresets.info);\n * console.log('%cDestacado', stylePresets.accent);\n * \n * @since 0.3.0\n */\nexport const stylePresets = {\n success: StylePresets.success().build(),\n error: StylePresets.error().build(),\n warning: StylePresets.warning().build(),\n info: StylePresets.info().build(),\n accent: StylePresets.accent().build(),\n};\n\n// Terminal formatting utilities\nexport {\n formatWithRightAlign,\n formatColumns,\n formatKeyValue,\n formatBadge,\n formatTimestamp as formatTimestampExt,\n formatRelativeTime,\n formatElapsedTime,\n resetStartTime,\n isKeyValueObject,\n stripAnsi,\n getVisibleLength,\n padToWidth,\n applyLogOptions,\n} from './terminal/formatter.js';\n\n// Color converter utilities\nexport {\n hexToRgb,\n rgbToHex,\n hexTo256,\n colorToHex,\n getANSIForeground,\n getANSIBackground,\n getANSI256Foreground,\n getANSI256Background,\n cssColorToANSI,\n ANSI,\n} from './terminal/color-converter.js';\n\nexport type { RGB, ColorCapability } from './terminal/color-converter.js';\n\n// Terminal renderer\nexport { TerminalRenderer } from './terminal/terminal-renderer.js';\nexport type { ANSIStyle, ChalkLikeInterface } from './terminal/terminal-renderer.js';\n\n// Environment detection\nexport {\n getEnvironment,\n isRunningInTerminal,\n supportsANSI,\n getColorCapability,\n getTerminalWidth,\n getTerminalHeight,\n getEnvironmentInfo,\n} from './utils/environment-detector.js';\n\nexport type { Environment } from './utils/environment-detector.js';"],"names":["error","c","i","v","badge","StyleBuilder","StylePresets"],"mappings":"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"}
package/dist/styling.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/Logger-BCfx_yCK.js"),t=require("./chunks/environment-Ba5kShbx.js");class StyledLogger extends e.Logger{logWithSVG(e,t,s={}){super.logWithSVG(e,t,s)}logAnimated(e,t=3){super.logAnimated(e,t)}showBanner(e){super.showBanner(e)}setBannerType(e){super.setBannerType(e)}setTheme(e){super.setTheme(e)}}const s=new StyledLogger,r={success:t.StylePresets.success().build(),error:t.StylePresets.error().build(),warning:t.StylePresets.warning().build(),info:t.StylePresets.info().build(),accent:t.StylePresets.accent().build()},o=Object.keys(e.THEME_PRESETS),n=Object.keys(e.BANNER_VARIANTS);exports.BANNER_VARIANTS=e.BANNER_VARIANTS,exports.THEME_BANNERS=e.THEME_BANNERS,exports.THEME_PRESETS=e.THEME_PRESETS,exports.StyleBuilder=t.StyleBuilder,exports.StylePresets=t.StylePresets,exports.StyledLogger=StyledLogger,exports.bannerTypes=n,exports.createStyle=()=>new t.StyleBuilder,exports.critical=(...e)=>s.critical(...e),exports.debug=(...e)=>s.debug(...e),exports.default=s,exports.error=(...e)=>s.error(...e),exports.group=(e,t)=>s.group(e,t),exports.groupEnd=()=>s.groupEnd(),exports.info=(...e)=>s.info(...e),exports.logAnimated=(e,t)=>s.logAnimated(e,t),exports.logWithSVG=(e,t,r)=>s.logWithSVG(e,t,r),exports.scope=e=>s.scope(e),exports.setBannerType=e=>s.setBannerType(e),exports.setGlobalPrefix=e=>s.setGlobalPrefix(e),exports.setTheme=e=>s.setTheme(e),exports.setVerbosity=e=>s.setVerbosity(e),exports.showBanner=e=>s.showBanner(e),exports.showInitBanner=t=>{e.displayInitBanner(t)},exports.stylePresets=r,exports.success=(...e)=>s.success(...e),exports.table=(e,t)=>s.table(e,t),exports.themes=o,exports.time=e=>s.time(e),exports.timeEnd=e=>s.timeEnd(e),exports.trace=(...e)=>s.trace(...e),exports.warn=(...e)=>s.warn(...e);
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/Logger-BV0v1AyC.js"),t=require("./chunks/environment-C_8J-zQ_.js");class StyledLogger extends e.Logger{logWithSVG(e,t,s={}){super.logWithSVG(e,t,s)}logAnimated(e,t=3){super.logAnimated(e,t)}showBanner(e){super.showBanner(e)}setBannerType(e){super.setBannerType(e)}setTheme(e){super.setTheme(e)}}const s=new StyledLogger,r={success:t.StylePresets.success().build(),error:t.StylePresets.error().build(),warning:t.StylePresets.warning().build(),info:t.StylePresets.info().build(),accent:t.StylePresets.accent().build()},o=Object.keys(e.THEME_PRESETS),n=Object.keys(e.BANNER_VARIANTS);exports.BANNER_VARIANTS=e.BANNER_VARIANTS,exports.THEME_BANNERS=e.THEME_BANNERS,exports.THEME_PRESETS=e.THEME_PRESETS,exports.StyleBuilder=t.StyleBuilder,exports.StylePresets=t.StylePresets,exports.StyledLogger=StyledLogger,exports.bannerTypes=n,exports.createStyle=()=>new t.StyleBuilder,exports.critical=(...e)=>s.critical(...e),exports.debug=(...e)=>s.debug(...e),exports.default=s,exports.error=(...e)=>s.error(...e),exports.group=(e,t)=>s.group(e,t),exports.groupEnd=()=>s.groupEnd(),exports.info=(...e)=>s.info(...e),exports.logAnimated=(e,t)=>s.logAnimated(e,t),exports.logWithSVG=(e,t,r)=>s.logWithSVG(e,t,r),exports.scope=e=>s.scope(e),exports.setBannerType=e=>s.setBannerType(e),exports.setGlobalPrefix=e=>s.setGlobalPrefix(e),exports.setTheme=e=>s.setTheme(e),exports.setVerbosity=e=>s.setVerbosity(e),exports.showBanner=e=>s.showBanner(e),exports.showInitBanner=t=>{e.displayInitBanner(t)},exports.stylePresets=r,exports.success=(...e)=>s.success(...e),exports.table=(e,t)=>s.table(e,t),exports.themes=o,exports.time=e=>s.time(e),exports.timeEnd=e=>s.timeEnd(e),exports.trace=(...e)=>s.trace(...e),exports.warn=(...e)=>s.warn(...e);
2
2
  //# sourceMappingURL=styling.cjs.map
package/dist/styling.js CHANGED
@@ -1,6 +1,6 @@
1
- import { L as Logger, T as THEME_PRESETS, B as BANNER_VARIANTS, e as displayInitBanner } from "./chunks/Logger-C126NTrD.js";
2
- import { a } from "./chunks/Logger-C126NTrD.js";
3
- import { S as StylePresets, b as StyleBuilder } from "./chunks/environment-TI2ByCPT.js";
1
+ import { L as Logger, T as THEME_PRESETS, B as BANNER_VARIANTS, e as displayInitBanner } from "./chunks/Logger-C086w3EM.js";
2
+ import { a } from "./chunks/Logger-C086w3EM.js";
3
+ import { S as StylePresets, c as StyleBuilder } from "./chunks/environment-DXHouGD4.js";
4
4
  class StyledLogger extends Logger {
5
5
  /**
6
6
  * Log with SVG background image
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Color Converter - CSS colors to ANSI extended color codes
3
+ * Supports 256-color and truecolor (24-bit) terminals
4
+ */
5
+ export type ColorCapability = 'full' | 'basic' | 'none';
6
+ export interface RGB {
7
+ r: number;
8
+ g: number;
9
+ b: number;
10
+ }
11
+ export declare function hexToRgb(hex: string): RGB;
12
+ export declare function rgbToHex(r: number, g: number, b: number): string;
13
+ export declare function hexTo256(hex: string): number;
14
+ export declare function colorToHex(color: string): string;
15
+ export declare function getANSIForeground(color: string, capability: ColorCapability): string;
16
+ export declare function getANSIBackground(color: string, capability: ColorCapability): string;
17
+ export declare function getANSI256Foreground(colorIndex: number): string;
18
+ export declare function getANSI256Background(colorIndex: number): string;
19
+ export declare function extractGradientColors(gradient: string): string[];
20
+ export declare function gradientToSingleColor(gradient: string): string;
21
+ export declare function cssColorToANSI(cssColor: string, capability: ColorCapability, isBackground?: boolean): string;
22
+ export declare const ANSI: {
23
+ reset: string;
24
+ bold: string;
25
+ dim: string;
26
+ italic: string;
27
+ underline: string;
28
+ blink: string;
29
+ inverse: string;
30
+ hidden: string;
31
+ strikethrough: string;
32
+ fg: {
33
+ black: string;
34
+ red: string;
35
+ green: string;
36
+ yellow: string;
37
+ blue: string;
38
+ magenta: string;
39
+ cyan: string;
40
+ white: string;
41
+ gray: string;
42
+ brightRed: string;
43
+ brightGreen: string;
44
+ brightYellow: string;
45
+ brightBlue: string;
46
+ brightMagenta: string;
47
+ brightCyan: string;
48
+ brightWhite: string;
49
+ };
50
+ bg: {
51
+ black: string;
52
+ red: string;
53
+ green: string;
54
+ yellow: string;
55
+ blue: string;
56
+ magenta: string;
57
+ cyan: string;
58
+ white: string;
59
+ gray: string;
60
+ brightRed: string;
61
+ brightGreen: string;
62
+ brightYellow: string;
63
+ brightBlue: string;
64
+ brightMagenta: string;
65
+ brightCyan: string;
66
+ brightWhite: string;
67
+ };
68
+ rgb: (r: number, g: number, b: number) => string;
69
+ bgRgb: (r: number, g: number, b: number) => string;
70
+ color256: (n: number) => string;
71
+ bgColor256: (n: number) => string;
72
+ };
73
+ //# sourceMappingURL=color-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-converter.d.ts","sourceRoot":"","sources":["../../src/terminal/color-converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,GAAG;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAiED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAUzC;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAc5C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBhD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,MAAM,CAmBpF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,MAAM,CAmBpF;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAiCD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAehE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW9D;AAED,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,eAAe,EAC3B,YAAY,GAAE,OAAe,GAC9B,MAAM,CAcR;AAED,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiDJ,MAAM,KAAK,MAAM,KAAK,MAAM;eAC1B,MAAM,KAAK,MAAM,KAAK,MAAM;kBACzB,MAAM;oBACJ,MAAM;CACzB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { ColorCapability } from './color-converter.js';
2
+ import { ColumnConfig, ColumnAlign, BadgeStyle, TimestampFormat, LogOptions } from '../types/index.js';
3
+ export declare function stripAnsi(str: string): string;
4
+ export declare function getVisibleLength(str: string): number;
5
+ export declare function padToWidth(str: string, width: number, align?: ColumnAlign): string;
6
+ export declare function formatWithRightAlign(leftContent: string, rightContent: string, maxWidth?: number): string;
7
+ export declare function formatColumns(columns: ColumnConfig[], maxWidth?: number, colorCapability?: ColorCapability): string;
8
+ export declare function formatKeyValue(obj: Record<string, unknown>, colorCapability?: ColorCapability, options?: {
9
+ separator?: string;
10
+ keyColor?: string;
11
+ valueColor?: string;
12
+ }): string;
13
+ export declare function isKeyValueObject(obj: unknown): obj is Record<string, unknown>;
14
+ export declare function formatBadge(badge: string, style?: BadgeStyle, colorCapability?: ColorCapability, color?: string): string;
15
+ export declare function formatTimestamp(date?: Date, format?: TimestampFormat): string;
16
+ export declare function formatRelativeTime(date: Date): string;
17
+ export declare function formatElapsedTime(date: Date): string;
18
+ export declare function resetStartTime(): void;
19
+ export declare function applyLogOptions(message: string, options: LogOptions, colorCapability?: ColorCapability): string;
20
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/terminal/formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE5G,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,WAAoB,GAAG,MAAM,CAiB1F;AAED,wBAAgB,oBAAoB,CAChC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAClB,MAAM,CAWR;AAED,wBAAgB,aAAa,CACzB,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,eAAe,GAAE,eAAwB,GAC1C,MAAM,CA2BR;AAED,wBAAgB,cAAc,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,eAAe,GAAE,eAAwB,EACzC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7E,MAAM,CA0BR;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc7E;AAED,wBAAgB,WAAW,CACvB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,UAAuB,EAC9B,eAAe,GAAE,eAAwB,EACzC,KAAK,CAAC,EAAE,MAAM,GACf,MAAM,CAsBR;AAED,wBAAgB,eAAe,CAC3B,IAAI,GAAE,IAAiB,EACvB,MAAM,GAAE,eAAwB,GACjC,MAAM,CAmBR;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAgBrD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAWpD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,wBAAgB,eAAe,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,eAAe,GAAE,eAAwB,GAC1C,MAAM,CAQR"}
@@ -1,4 +1,5 @@
1
1
  import { LogLevel, LogStyles } from '../types/index.js';
2
+ import { ColorCapability } from './color-converter.js';
2
3
  export type ANSIStyle = {
3
4
  text: string;
4
5
  timestamp?: string;
@@ -10,9 +11,9 @@ export type ANSIStyle = {
10
11
  };
11
12
  export declare class TerminalRenderer {
12
13
  private colorCapability;
13
- constructor(colorCapability?: 'full' | 'basic' | 'none');
14
+ constructor(colorCapability?: ColorCapability);
14
15
  /**
15
- * Get ANSI color codes for basic colors
16
+ * Get ANSI color codes - now supports truecolor/256-color
16
17
  */
17
18
  private getColorCode;
18
19
  /**
@@ -48,16 +49,29 @@ export declare class TerminalRenderer {
48
49
  */
49
50
  getLevelText(level: LogLevel): string;
50
51
  /**
51
- * Create cyberpunk-style ANSI rendering
52
+ * Create cyberpunk-style ANSI rendering with truecolor support
52
53
  */
53
54
  renderCyberpunk(level: LogLevel, message: string, timestamp?: string, prefix?: string, location?: string): ANSIStyle;
54
55
  /**
55
- * Create minimal ANSI rendering
56
+ * Create minimal ANSI rendering with truecolor support
56
57
  */
57
58
  renderMinimal(level: LogLevel, message: string, timestamp?: string, prefix?: string): ANSIStyle;
58
59
  /**
59
- * Get chalk instance for log level (for compatibility with adapter)
60
+ * Get chalk-like interface for log level with truecolor support
60
61
  */
61
- getChalkForLevel(level: LogLevel): any;
62
+ getChalkForLevel(level: LogLevel): ChalkLikeInterface;
63
+ }
64
+ export interface ChalkLikeInterface {
65
+ color: (text: string) => string;
66
+ bold: (text: string) => string;
67
+ dim: (text: string) => string;
68
+ bgGray: (text: string) => string;
69
+ bgBlue: (text: string) => string;
70
+ reset: (text: string) => string;
71
+ cyan: {
72
+ bold: (text: string) => string;
73
+ dim: (text: string) => string;
74
+ bg: (text: string) => string;
75
+ };
62
76
  }
63
77
  //# sourceMappingURL=terminal-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-renderer.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,gBAAgB;IACzB,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,GAAE,MAAM,GAAG,OAAO,GAAG,MAAe;IAI/D;;OAEG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,cAAc,CACV,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,SAAS,GACnB,SAAS;IAgCZ;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACI,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAY5C;;OAEG;IACH,eAAe,CACX,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAClB,SAAS;IAsCZ;;OAEG;IACH,aAAa,CACT,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GAChB,SAAS;IA+BZ;;OAEG;IACI,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG;CAiDhD"}
1
+ {"version":3,"file":"terminal-renderer.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAA8C,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAExG,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,gBAAgB;IACzB,OAAO,CAAC,eAAe,CAAkB;gBAE7B,eAAe,GAAE,eAAwB;IAIrD;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,cAAc,CACV,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,SAAS,GACnB,SAAS;IAgCZ;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACI,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAY5C;;OAEG;IACH,eAAe,CACX,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAClB,SAAS;IAuCZ;;OAEG;IACH,aAAa,CACT,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GAChB,SAAS;IAkCZ;;OAEG;IACI,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,kBAAkB;CAsC/D;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,IAAI,EAAE;QACF,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;QAC/B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;QAC9B,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;KAChC,CAAC;CACL"}
@@ -269,4 +269,21 @@ export interface Bindings {
269
269
  type?: 'scope' | 'api' | 'component';
270
270
  context?: string[];
271
271
  }
272
+ export type BadgeStyle = 'brackets' | 'rounded' | 'plain' | 'unicode' | 'pill';
273
+ export type TimestampFormat = 'iso' | 'time' | 'timeMs' | 'relative' | 'elapsed' | 'date' | 'custom';
274
+ export type ColumnAlign = 'left' | 'right' | 'center';
275
+ export interface ColumnConfig {
276
+ content: string;
277
+ width?: number;
278
+ align?: ColumnAlign;
279
+ color?: string;
280
+ }
281
+ export interface LogOptions {
282
+ rightAlign?: string;
283
+ columns?: ColumnConfig[];
284
+ maxWidth?: number;
285
+ keyValue?: boolean;
286
+ badgeStyle?: BadgeStyle;
287
+ timestampFormat?: TimestampFormat;
288
+ }
272
289
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview Type definitions exports for Advanced Logger
3
3
  */
4
- export type { LogLevel, Verbosity, ThemeVariant, DevToolsTheme, BannerType, ExportFormat, OutputFormat, LoggerConfig, StackInfo, TimerEntry, TimerResult, StyleOptions, AdaptiveColors, SpacingType, LogLayout, LogPartConfig, LogStyles, IScopedLogger, IAPILogger, IComponentLogger, Bindings, } from './core.js';
4
+ export type { LogLevel, Verbosity, ThemeVariant, DevToolsTheme, BannerType, ExportFormat, OutputFormat, LoggerConfig, StackInfo, TimerEntry, TimerResult, StyleOptions, AdaptiveColors, SpacingType, LogLayout, LogPartConfig, LogStyles, IScopedLogger, IAPILogger, IComponentLogger, Bindings, BadgeStyle, TimestampFormat, ColumnAlign, ColumnConfig, LogOptions, } from './core.js';
5
5
  export { LOG_LEVELS } from './core.js';
6
6
  export type { LogMetadata, ILogHandler, LogEntry, ExportFilters, ExportOptions, ExportResult, BufferStats, } from './handlers.js';
7
7
  export type { SerializerFn, SerializerContext, SerializerEntry, SerializerConfig, ISerializerRegistry, } from './serializers.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACR,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,SAAS,EACT,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,QAAQ,GACX,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,YAAY,EACR,WAAW,EACX,WAAW,EACX,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,GACd,MAAM,eAAe,CAAC;AAGvB,YAAY,EACR,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACR,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACR,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACR,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,SAAS,EACT,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,UAAU,GACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,YAAY,EACR,WAAW,EACX,WAAW,EACX,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,GACd,MAAM,eAAe,CAAC;AAGvB,YAAY,EACR,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACR,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACR,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -19,6 +19,14 @@ export declare function supportsANSI(): boolean;
19
19
  * Get environment-specific color capability
20
20
  */
21
21
  export declare function getColorCapability(): 'full' | 'basic' | 'none';
22
+ /**
23
+ * Get terminal width in columns
24
+ */
25
+ export declare function getTerminalWidth(): number;
26
+ /**
27
+ * Get terminal height in rows
28
+ */
29
+ export declare function getTerminalHeight(): number;
22
30
  /**
23
31
  * Environment information for debugging
24
32
  */
@@ -31,5 +39,7 @@ export declare function getEnvironmentInfo(): {
31
39
  nodeVersion: string | null;
32
40
  term: string | null | undefined;
33
41
  colorTerm: string | null | undefined;
42
+ terminalWidth: number;
43
+ terminalHeight: number;
34
44
  };
35
45
  //# sourceMappingURL=environment-detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment-detector.d.ts","sourceRoot":"","sources":["../../src/utils/environment-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/F;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CA0B5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAiC7C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAQtC;AAmBD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,OAAO,GAAG,MAAM,CAsB9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB;;;;;;;;;EAWjC"}
1
+ {"version":3,"file":"environment-detector.d.ts","sourceRoot":"","sources":["../../src/utils/environment-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/F;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CA0B5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAiC7C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAQtC;AAmBD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,OAAO,GAAG,MAAM,CAsB9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB;;;;;;;;;;;EAajC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mks2508/better-logger",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "type": "module",
5
5
  "description": "Logger avanzado para consola con estilos CSS, temas adaptativos, badges automáticos, SVG, animaciones, CLI integrado y soporte dual browser/terminal con colores ANSI",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mks2508/better-logger-core",
3
- "version": "0.15.0-alpha.1",
3
+ "version": "0.16.0-alpha.1",
4
4
  "type": "module",
5
5
  "description": "Universal core logging functionality for Better Logger - Works in both Node.js and browser environments",
6
6
  "main": "dist/index.cjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mks2508/better-logger-styling",
3
- "version": "0.13.0-alpha.1",
3
+ "version": "0.16.0-alpha.1",
4
4
  "type": "module",
5
5
  "description": "Advanced CSS styling system for Better Logger - Console styling with gradients, animations and SVG support",
6
6
  "main": "dist/index.js",
@@ -36,6 +36,6 @@
36
36
  "README.md"
37
37
  ],
38
38
  "peerDependencies": {
39
- "@mks2508/better-logger-core": "^0.13.0-alpha.1"
39
+ "@mks2508/better-logger-core": "^0.16.0-alpha.1"
40
40
  }
41
41
  }
package/src/Logger.ts CHANGED
@@ -420,9 +420,9 @@ export class Logger {
420
420
  *
421
421
  * @since 0.3.0
422
422
  */
423
- hideTimestamp(): void {
423
+ hideTimestamp(): this {
424
424
  this.displaySettings.showTimestamp = false;
425
- this.success('Timestamp hidden');
425
+ return this;
426
426
  }
427
427
 
428
428
  /**
@@ -434,9 +434,9 @@ export class Logger {
434
434
  *
435
435
  * @since 0.3.0
436
436
  */
437
- showTimestamp(): void {
437
+ showTimestamp(): this {
438
438
  this.displaySettings.showTimestamp = true;
439
- this.success('Timestamp shown');
439
+ return this;
440
440
  }
441
441
 
442
442
  /**
@@ -448,9 +448,9 @@ export class Logger {
448
448
  *
449
449
  * @since 0.3.0
450
450
  */
451
- hideLocation(): void {
451
+ hideLocation(): this {
452
452
  this.displaySettings.showLocation = false;
453
- this.success('Location info hidden');
453
+ return this;
454
454
  }
455
455
 
456
456
  /**
@@ -462,9 +462,9 @@ export class Logger {
462
462
  *
463
463
  * @since 0.3.0
464
464
  */
465
- showLocation(): void {
465
+ showLocation(): this {
466
466
  this.displaySettings.showLocation = true;
467
- this.success('Location info shown');
467
+ return this;
468
468
  }
469
469
 
470
470
  /**
@@ -477,9 +477,9 @@ export class Logger {
477
477
  *
478
478
  * @since 0.3.0
479
479
  */
480
- hideBadges(): void {
480
+ hideBadges(): this {
481
481
  this.displaySettings.showBadges = false;
482
- this.success('Badges hidden');
482
+ return this;
483
483
  }
484
484
 
485
485
  /**
@@ -492,9 +492,9 @@ export class Logger {
492
492
  *
493
493
  * @since 0.3.0
494
494
  */
495
- showBadges(): void {
495
+ showBadges(): this {
496
496
  this.displaySettings.showBadges = true;
497
- this.success('Badges shown');
497
+ return this;
498
498
  }
499
499
 
500
500
  /**