@mks2508/better-logger 4.0.0 → 5.0.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.
- package/CHANGELOG.json +23 -1
- package/dist/Logger.d.ts +117 -4
- package/dist/Logger.d.ts.map +1 -1
- package/dist/ScopedLogger.d.ts +17 -0
- package/dist/ScopedLogger.d.ts.map +1 -1
- package/dist/chunks/{Logger-D-gmmgR2.js → Logger-BZ7B7OXE.js} +228 -175
- package/dist/chunks/Logger-BZ7B7OXE.js.map +1 -0
- package/dist/chunks/Logger-Cbi1f10o.js +2 -0
- package/dist/chunks/Logger-Cbi1f10o.js.map +1 -0
- package/dist/chunks/cli-module-CadqgZ1Z.js +2 -0
- package/dist/chunks/cli-module-CadqgZ1Z.js.map +1 -0
- package/dist/chunks/cli-module-ClIJmaT8.js +383 -0
- package/dist/chunks/cli-module-ClIJmaT8.js.map +1 -0
- package/dist/chunks/color-converter-CCSQRztd.js +2 -0
- package/dist/chunks/color-converter-CCSQRztd.js.map +1 -0
- package/dist/chunks/color-converter-_Xdmsy7E.js +462 -0
- package/dist/chunks/color-converter-_Xdmsy7E.js.map +1 -0
- package/dist/chunks/{environment-COWvu6Wz.js → environment-C1xxvc8l.js} +26 -476
- package/dist/chunks/environment-C1xxvc8l.js.map +1 -0
- package/dist/chunks/environment-Cprkw3g9.js +4 -0
- package/dist/chunks/environment-Cprkw3g9.js.map +1 -0
- package/dist/chunks/{formatting-CYjT9yhO.js → formatting-DMJxYq9o.js} +18 -18
- package/dist/chunks/{formatting-CYjT9yhO.js.map → formatting-DMJxYq9o.js.map} +1 -1
- package/dist/chunks/{formatting-Cg5YhB9Y.js → formatting-DpKxCsXq.js} +2 -2
- package/dist/chunks/{formatting-Cg5YhB9Y.js.map → formatting-DpKxCsXq.js.map} +1 -1
- package/dist/cli-module.d.ts +15 -0
- package/dist/cli-module.d.ts.map +1 -0
- package/dist/cli-primitives/box.d.ts +11 -0
- package/dist/cli-primitives/box.d.ts.map +1 -0
- package/dist/cli-primitives/cli-table.d.ts +11 -0
- package/dist/cli-primitives/cli-table.d.ts.map +1 -0
- package/dist/cli-primitives/divider.d.ts +11 -0
- package/dist/cli-primitives/divider.d.ts.map +1 -0
- package/dist/cli-primitives/header.d.ts +12 -0
- package/dist/cli-primitives/header.d.ts.map +1 -0
- package/dist/cli-primitives/index.d.ts +13 -0
- package/dist/cli-primitives/index.d.ts.map +1 -0
- package/dist/cli-primitives/server-fallback.d.ts +25 -0
- package/dist/cli-primitives/server-fallback.d.ts.map +1 -0
- package/dist/cli-primitives/spinner.d.ts +47 -0
- package/dist/cli-primitives/spinner.d.ts.map +1 -0
- package/dist/cli-primitives/step.d.ts +11 -0
- package/dist/cli-primitives/step.d.ts.map +1 -0
- package/dist/cli.cjs +2 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.js +12 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants.d.ts +9 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +2 -2
- package/dist/exports-module.d.ts +1 -1
- package/dist/exports-module.d.ts.map +1 -1
- package/dist/exports.cjs +1 -1
- package/dist/exports.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -53
- package/dist/index.js.map +1 -1
- package/dist/styling-module.d.ts +1 -1
- package/dist/styling-module.d.ts.map +1 -1
- package/dist/styling.cjs +1 -1
- package/dist/styling.js +3 -3
- package/dist/types/core.d.ts +47 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +28 -3
- package/packages/core/package.json +1 -1
- package/playground/demo-all.ts +95 -0
- package/playground/demo-box.ts +85 -0
- package/playground/demo-levels.ts +56 -0
- package/playground/demo-real-world.ts +98 -0
- package/playground/demo-spinner.ts +77 -0
- package/playground/demo-steps.ts +72 -0
- package/playground/demo-table.ts +83 -0
- package/src/Logger.ts +213 -8
- package/src/ScopedLogger.ts +43 -1
- package/src/cli-module.ts +21 -0
- package/src/cli-primitives/box.ts +86 -0
- package/src/cli-primitives/cli-table.ts +62 -0
- package/src/cli-primitives/divider.ts +17 -0
- package/src/cli-primitives/header.ts +18 -0
- package/src/cli-primitives/index.ts +13 -0
- package/src/cli-primitives/server-fallback.ts +54 -0
- package/src/cli-primitives/spinner.ts +133 -0
- package/src/cli-primitives/step.ts +22 -0
- package/src/constants.ts +14 -2
- package/src/index.ts +18 -1
- package/src/types/core.ts +53 -0
- package/src/types/index.ts +4 -0
- package/vite.config.ts +33 -0
- package/dist/chunks/Logger-D-gmmgR2.js.map +0 -1
- package/dist/chunks/Logger-D7cfaz15.js +0 -2
- package/dist/chunks/Logger-D7cfaz15.js.map +0 -1
- package/dist/chunks/environment-COWvu6Wz.js.map +0 -1
- package/dist/chunks/environment-C_8J-zQ_.js +0 -4
- package/dist/chunks/environment-C_8J-zQ_.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/writers/BufferWriter.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 BufferWriter - Collects log output in memory for later use\n * @version 4.0.0\n */\n\nimport type { LogLevel, OutputWriter } from '../types/core.js';\n\n/**\n * Entry in the log buffer\n */\nexport interface BufferEntry {\n message: string;\n level: LogLevel;\n styles: string[];\n timestamp: number;\n}\n\n/**\n * BufferWriter collects log messages in memory instead of outputting to console.\n * Useful for:\n * - CLI operations with spinners (buffer logs during spinner, show after)\n * - Testing (capture logs for assertions)\n * - Batch processing (collect logs, process together)\n *\n * @implements {OutputWriter}\n * @since 4.0.0\n *\n * @example\n * import logger, { BufferWriter } from '@mks2508/better-logger';\n *\n * const buffer = new BufferWriter();\n * logger.updateConfig({\n * outputMode: 'custom',\n * outputWriter: buffer\n * });\n *\n * // Logs go to buffer, not console\n * spinner.start('Loading...');\n * logger.info('Connecting...');\n * logger.info('Processing...');\n * spinner.stop();\n *\n * // Show buffered logs\n * logger.updateConfig({ outputMode: 'console' });\n * buffer.flush(); // Outputs all buffered logs to console\n */\nexport class BufferWriter implements OutputWriter {\n private buffer: BufferEntry[] = [];\n private maxSize: number;\n\n /**\n * Creates a new BufferWriter\n * @param maxSize - Maximum number of entries to buffer (default: 1000)\n */\n constructor(maxSize: number = 1000) {\n this.maxSize = maxSize;\n }\n\n /**\n * Writes a log entry to the buffer\n * @param message - Formatted log message\n * @param level - Log level\n * @param styles - CSS styles (for browser console)\n */\n write(message: string, level: LogLevel, styles: string[]): void {\n if (this.buffer.length >= this.maxSize) {\n this.buffer.shift(); // Remove oldest entry\n }\n\n this.buffer.push({\n message,\n level,\n styles,\n timestamp: Date.now()\n });\n }\n\n /**\n * Returns all buffered entries\n * @returns Copy of the buffer array\n */\n getBuffer(): BufferEntry[] {\n return [...this.buffer];\n }\n\n /**\n * Returns buffered entries filtered by log level\n * @param levels - Log levels to include\n * @returns Filtered buffer entries\n */\n getByLevel(...levels: LogLevel[]): BufferEntry[] {\n return this.buffer.filter(entry => levels.includes(entry.level));\n }\n\n /**\n * Returns the number of buffered entries\n */\n get size(): number {\n return this.buffer.length;\n }\n\n /**\n * Checks if buffer is empty\n */\n get isEmpty(): boolean {\n return this.buffer.length === 0;\n }\n\n /**\n * Clears all buffered entries\n */\n clear(): void {\n this.buffer = [];\n }\n\n /**\n * Outputs all buffered entries to console and clears the buffer\n */\n flush(): void {\n this.buffer.forEach(entry => {\n if (entry.styles.length > 0) {\n console.log(entry.message, ...entry.styles);\n } else {\n console.log(entry.message);\n }\n });\n this.clear();\n }\n\n /**\n * Outputs buffered entries to console without clearing\n */\n replay(): void {\n this.buffer.forEach(entry => {\n if (entry.styles.length > 0) {\n console.log(entry.message, ...entry.styles);\n } else {\n console.log(entry.message);\n }\n });\n }\n\n /**\n * Returns all messages as an array of strings\n */\n toArray(): string[] {\n return this.buffer.map(entry => entry.message);\n }\n\n /**\n * Returns all messages joined as a single string\n * @param separator - String to join messages with (default: newline)\n */\n toString(separator: string = '\\n'): string {\n return this.toArray().join(separator);\n }\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';\n\n// Output writers for custom log destinations\nexport { BufferWriter, type BufferEntry } from './writers/index.js';\nexport type { OutputWriter, OutputMode } from './types/core.js';"],"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/writers/BufferWriter.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 BufferWriter - Collects log output in memory for later use\n * @version 4.0.0\n */\n\nimport type { LogLevel, OutputWriter } from '../types/core.js';\n\n/**\n * Entry in the log buffer\n */\nexport interface BufferEntry {\n message: string;\n level: LogLevel;\n styles: string[];\n timestamp: number;\n}\n\n/**\n * BufferWriter collects log messages in memory instead of outputting to console.\n * Useful for:\n * - CLI operations with spinners (buffer logs during spinner, show after)\n * - Testing (capture logs for assertions)\n * - Batch processing (collect logs, process together)\n *\n * @implements {OutputWriter}\n * @since 4.0.0\n *\n * @example\n * import logger, { BufferWriter } from '@mks2508/better-logger';\n *\n * const buffer = new BufferWriter();\n * logger.updateConfig({\n * outputMode: 'custom',\n * outputWriter: buffer\n * });\n *\n * // Logs go to buffer, not console\n * spinner.start('Loading...');\n * logger.info('Connecting...');\n * logger.info('Processing...');\n * spinner.stop();\n *\n * // Show buffered logs\n * logger.updateConfig({ outputMode: 'console' });\n * buffer.flush(); // Outputs all buffered logs to console\n */\nexport class BufferWriter implements OutputWriter {\n private buffer: BufferEntry[] = [];\n private maxSize: number;\n\n /**\n * Creates a new BufferWriter\n * @param maxSize - Maximum number of entries to buffer (default: 1000)\n */\n constructor(maxSize: number = 1000) {\n this.maxSize = maxSize;\n }\n\n /**\n * Writes a log entry to the buffer\n * @param message - Formatted log message\n * @param level - Log level\n * @param styles - CSS styles (for browser console)\n */\n write(message: string, level: LogLevel, styles: string[]): void {\n if (this.buffer.length >= this.maxSize) {\n this.buffer.shift(); // Remove oldest entry\n }\n\n this.buffer.push({\n message,\n level,\n styles,\n timestamp: Date.now()\n });\n }\n\n /**\n * Returns all buffered entries\n * @returns Copy of the buffer array\n */\n getBuffer(): BufferEntry[] {\n return [...this.buffer];\n }\n\n /**\n * Returns buffered entries filtered by log level\n * @param levels - Log levels to include\n * @returns Filtered buffer entries\n */\n getByLevel(...levels: LogLevel[]): BufferEntry[] {\n return this.buffer.filter(entry => levels.includes(entry.level));\n }\n\n /**\n * Returns the number of buffered entries\n */\n get size(): number {\n return this.buffer.length;\n }\n\n /**\n * Checks if buffer is empty\n */\n get isEmpty(): boolean {\n return this.buffer.length === 0;\n }\n\n /**\n * Clears all buffered entries\n */\n clear(): void {\n this.buffer = [];\n }\n\n /**\n * Outputs all buffered entries to console and clears the buffer\n */\n flush(): void {\n this.buffer.forEach(entry => {\n if (entry.styles.length > 0) {\n console.log(entry.message, ...entry.styles);\n } else {\n console.log(entry.message);\n }\n });\n this.clear();\n }\n\n /**\n * Outputs buffered entries to console without clearing\n */\n replay(): void {\n this.buffer.forEach(entry => {\n if (entry.styles.length > 0) {\n console.log(entry.message, ...entry.styles);\n } else {\n console.log(entry.message);\n }\n });\n }\n\n /**\n * Returns all messages as an array of strings\n */\n toArray(): string[] {\n return this.buffer.map(entry => entry.message);\n }\n\n /**\n * Returns all messages joined as a single string\n * @param separator - String to join messages with (default: newline)\n */\n toString(separator: string = '\\n'): string {\n return this.toArray().join(separator);\n }\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 CLILogLevel,\n IBoxOptions,\n ITableOptions,\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// CLI Primitives (v5.0)\nexport const step = (current: number, total: number, message: string) => getLogger().step(current, total, message);\nexport const spinner = (message: string) => getLogger().spinner(message);\nexport const box = (content: string, options?: IBoxOptions) => getLogger().box(content, options);\nexport const cliTable = (rows: Record<string, unknown>[], options?: ITableOptions) => getLogger().cliTable(rows, options);\nexport const header = (title: string, subtitle?: string) => getLogger().header(title, subtitle);\nexport const divider = () => getLogger().divider();\nexport const blank = () => getLogger().blank();\nexport const setCLILevel = (level: CLILogLevel) => getLogger().setCLILevel(level);\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 CLILogLevel,\n ISpinnerHandle,\n IBoxOptions,\n ITableOptions,\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';\n\n// Output writers for custom log destinations\nexport { BufferWriter, type BufferEntry } from './writers/index.js';\nexport type { OutputWriter, OutputMode } from './types/core.js';"],"names":["error","StyleBuilder","StylePresets"],"mappings":"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"}
|
package/dist/styling-module.d.ts
CHANGED
|
@@ -163,7 +163,7 @@ export declare const table: (data: any, columns?: string[]) => void;
|
|
|
163
163
|
export declare const group: (label: string, collapsed?: boolean) => void;
|
|
164
164
|
export declare const groupEnd: () => void;
|
|
165
165
|
export declare const time: (label: string) => void;
|
|
166
|
-
export declare const timeEnd: (label: string) =>
|
|
166
|
+
export declare const timeEnd: (label: string) => number;
|
|
167
167
|
export declare const setGlobalPrefix: (prefix: string) => void;
|
|
168
168
|
export declare const scope: (prefix: string) => import('./ScopedLogger.js').ScopedLogger;
|
|
169
169
|
export declare const setVerbosity: (level: any) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styling-module.d.ts","sourceRoot":"","sources":["../src/styling-module.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EACH,YAAY,EAMf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EACR,YAAY,EACZ,UAAU,EACV,YAAY,EACf,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAa,SAAQ,MAAM;IACpC;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,IAAI;IAIlF;;;;;;;;;;OAUG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI;IAIxD;;;;;;;;;OASG;IACH,UAAU,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI;IAIzC;;;;;;;;;OASG;IACH,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAI3C;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;CAGtC;AAGD,QAAA,MAAM,YAAY,cAAqB,CAAC;AAExC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,oBAA2B,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY;;;;;;CAMxB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,UAA6B,CAAC;AAEjD;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,UAA+B,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,GAAI,aAAa,UAAU,SAErD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,GAAG,EAAE,SAAgC,CAAC;AACrE,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,GAAG,EAAE,SAA+B,CAAC;AACnE,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,GAAG,EAAE,SAA+B,CAAC;AACnE,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,GAAG,EAAE,SAAgC,CAAC;AACrE,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,GAAG,EAAE,SAAkC,CAAC;AACzE,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,GAAG,EAAE,SAAmC,CAAC;AAC3E,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,GAAG,EAAE,SAAgC,CAAC;AACrE,eAAO,MAAM,KAAK,GAAI,MAAM,GAAG,EAAE,UAAU,MAAM,EAAE,SAAsC,CAAC;AAC1F,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,YAAY,OAAO,SAAyC,CAAC;AAClG,eAAO,MAAM,QAAQ,YAAgC,CAAC;AACtD,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,SAA6B,CAAC;AAChE,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"styling-module.d.ts","sourceRoot":"","sources":["../src/styling-module.ts"],"names":[],"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-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/Logger-Cbi1f10o.js"),t=require("./chunks/environment-Cprkw3g9.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,
|
|
2
|
-
import { a } from "./chunks/Logger-
|
|
3
|
-
import { S as StylePresets, b as StyleBuilder } from "./chunks/environment-
|
|
1
|
+
import { L as Logger, T as THEME_PRESETS, B as BANNER_VARIANTS, d as displayInitBanner } from "./chunks/Logger-BZ7B7OXE.js";
|
|
2
|
+
import { a } from "./chunks/Logger-BZ7B7OXE.js";
|
|
3
|
+
import { S as StylePresets, b as StyleBuilder } from "./chunks/environment-C1xxvc8l.js";
|
|
4
4
|
class StyledLogger extends Logger {
|
|
5
5
|
/**
|
|
6
6
|
* Log with SVG background image
|
package/dist/types/core.d.ts
CHANGED
|
@@ -165,6 +165,8 @@ export interface LoggerConfig {
|
|
|
165
165
|
outputMode?: OutputMode;
|
|
166
166
|
/** Custom writer when outputMode is 'custom' @since 4.0.0 */
|
|
167
167
|
outputWriter?: OutputWriter;
|
|
168
|
+
/** CLI verbosity level for controlling primitive output @since 5.0.0 */
|
|
169
|
+
cliLevel?: CLILogLevel;
|
|
168
170
|
}
|
|
169
171
|
/**
|
|
170
172
|
* Información parseada del stack trace
|
|
@@ -330,4 +332,49 @@ export interface LogOptions {
|
|
|
330
332
|
badgeStyle?: BadgeStyle;
|
|
331
333
|
timestampFormat?: TimestampFormat;
|
|
332
334
|
}
|
|
335
|
+
/**
|
|
336
|
+
* CLI verbosity levels for controlling primitive output
|
|
337
|
+
* @since 5.0.0
|
|
338
|
+
*/
|
|
339
|
+
export type CLILogLevel = 'silent' | 'quiet' | 'normal' | 'verbose' | 'debug';
|
|
340
|
+
/**
|
|
341
|
+
* Handle returned by logger.spinner() for controlling spinner lifecycle
|
|
342
|
+
* @since 5.0.0
|
|
343
|
+
*/
|
|
344
|
+
export interface ISpinnerHandle {
|
|
345
|
+
/** Start the spinner animation */
|
|
346
|
+
start(): void;
|
|
347
|
+
/** Stop the spinner without a status message */
|
|
348
|
+
stop(): void;
|
|
349
|
+
/** Stop the spinner with a success message */
|
|
350
|
+
succeed(msg?: string): void;
|
|
351
|
+
/** Stop the spinner with a failure message */
|
|
352
|
+
fail(msg?: string): void;
|
|
353
|
+
/** Update the spinner text while running */
|
|
354
|
+
text(msg: string): void;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Options for logger.box() output
|
|
358
|
+
* @since 5.0.0
|
|
359
|
+
*/
|
|
360
|
+
export interface IBoxOptions {
|
|
361
|
+
/** Title displayed in the top border */
|
|
362
|
+
title?: string;
|
|
363
|
+
/** Color of the border (hex, CSS name, or ANSI name) */
|
|
364
|
+
borderColor?: string;
|
|
365
|
+
/** Border character style */
|
|
366
|
+
borderStyle?: 'single' | 'double' | 'rounded' | 'bold';
|
|
367
|
+
/** Inner padding lines (default: 0) */
|
|
368
|
+
padding?: number;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Options for logger.cliTable() output
|
|
372
|
+
* @since 5.0.0
|
|
373
|
+
*/
|
|
374
|
+
export interface ITableOptions {
|
|
375
|
+
/** Column names to display (overrides auto-detection) */
|
|
376
|
+
columns?: string[];
|
|
377
|
+
/** Header labels (defaults to column names) */
|
|
378
|
+
head?: string[];
|
|
379
|
+
}
|
|
333
380
|
//# sourceMappingURL=core.d.ts.map
|
package/dist/types/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU;;;;;;CAMb,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAE/C;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3F;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;AAE7E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChE,KAAK,CAAC,IAAI,IAAI,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,YAAY;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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, BadgeStyle, TimestampFormat, ColumnAlign, ColumnConfig, LogOptions, } 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, CLILogLevel, ISpinnerHandle, IBoxOptions, ITableOptions, } 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,EACR,UAAU,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,UAAU,
|
|
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,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,GAChB,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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mks2508/better-logger",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.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",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.cjs",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./core": {
|
|
15
|
+
"import": "./dist/core.js",
|
|
16
|
+
"require": "./dist/core.cjs",
|
|
17
|
+
"types": "./dist/core.d.ts"
|
|
18
|
+
},
|
|
19
|
+
"./cli": {
|
|
20
|
+
"import": "./dist/cli.js",
|
|
21
|
+
"require": "./dist/cli.cjs",
|
|
22
|
+
"types": "./dist/cli-module.d.ts"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
8
25
|
"keywords": [
|
|
9
26
|
"logger",
|
|
10
27
|
"console",
|
|
@@ -46,7 +63,8 @@
|
|
|
46
63
|
"build:core": "tsc && BUILD_MODE=core vite build",
|
|
47
64
|
"build:styling": "tsc && BUILD_MODE=styling vite build",
|
|
48
65
|
"build:exports": "tsc && BUILD_MODE=exports vite build",
|
|
49
|
-
"build:
|
|
66
|
+
"build:cli": "tsc && BUILD_MODE=cli vite build",
|
|
67
|
+
"build:all": "npm run build:full && npm run build:core && npm run build:styling && npm run build:exports && npm run build:cli",
|
|
50
68
|
"clean": "rm -rf dist node_modules/.vite",
|
|
51
69
|
"type-check": "tsc --noEmit",
|
|
52
70
|
"test": "echo 'Running tests...' && exit 0",
|
|
@@ -85,7 +103,14 @@
|
|
|
85
103
|
"publish:all-packages": "npm run publish:core && npm run publish:styling && npm run publish:exports",
|
|
86
104
|
"workflow:full": "npm run commit:auto && npm run release:full",
|
|
87
105
|
"workflow:commit": "npm run commit:auto",
|
|
88
|
-
"workflow:release": "npm run version:auto && npm run build:all && npm run release:github"
|
|
106
|
+
"workflow:release": "npm run version:auto && npm run build:all && npm run release:github",
|
|
107
|
+
"play": "bun playground/demo-all.ts",
|
|
108
|
+
"play:spinner": "bun playground/demo-spinner.ts",
|
|
109
|
+
"play:box": "bun playground/demo-box.ts",
|
|
110
|
+
"play:table": "bun playground/demo-table.ts",
|
|
111
|
+
"play:steps": "bun playground/demo-steps.ts",
|
|
112
|
+
"play:levels": "bun playground/demo-levels.ts",
|
|
113
|
+
"play:real": "bun playground/demo-real-world.ts"
|
|
89
114
|
},
|
|
90
115
|
"devDependencies": {
|
|
91
116
|
"@types/node": "^24.5.2",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mks2508/better-logger-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.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",
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Full showcase of every CLI primitive in sequence.
|
|
3
|
+
* Run: bun playground/demo-all.ts
|
|
4
|
+
*/
|
|
5
|
+
import { Logger } from '../src/Logger.js';
|
|
6
|
+
import type { CLILogLevel } from '../src/types/index.js';
|
|
7
|
+
|
|
8
|
+
const logger = new Logger();
|
|
9
|
+
const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));
|
|
10
|
+
|
|
11
|
+
async function main() {
|
|
12
|
+
// ── Header & Divider ──────────────────────────────
|
|
13
|
+
logger.header('Better Logger v5', 'CLI Primitives Showcase');
|
|
14
|
+
logger.divider();
|
|
15
|
+
logger.blank();
|
|
16
|
+
|
|
17
|
+
// ── Steps ─────────────────────────────────────────
|
|
18
|
+
logger.info('▸ Step progress');
|
|
19
|
+
for (let i = 1; i <= 5; i++) {
|
|
20
|
+
logger.step(i, 5, `Processing item ${i}...`);
|
|
21
|
+
await sleep(200);
|
|
22
|
+
}
|
|
23
|
+
logger.blank();
|
|
24
|
+
|
|
25
|
+
// ── Box — all border styles ───────────────────────
|
|
26
|
+
logger.info('▸ Box primitives');
|
|
27
|
+
logger.blank();
|
|
28
|
+
|
|
29
|
+
const styles = ['single', 'rounded', 'double', 'bold'] as const;
|
|
30
|
+
for (const style of styles) {
|
|
31
|
+
logger.box(`borderStyle: "${style}"`, {
|
|
32
|
+
title: style.toUpperCase(),
|
|
33
|
+
borderStyle: style,
|
|
34
|
+
});
|
|
35
|
+
logger.blank();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
logger.box('Box with custom border color\nand multiline content', {
|
|
39
|
+
title: 'Colored',
|
|
40
|
+
borderStyle: 'rounded',
|
|
41
|
+
borderColor: '#ff6b6b',
|
|
42
|
+
});
|
|
43
|
+
logger.blank();
|
|
44
|
+
|
|
45
|
+
// ── Table ─────────────────────────────────────────
|
|
46
|
+
logger.info('▸ CLI Table');
|
|
47
|
+
logger.blank();
|
|
48
|
+
logger.cliTable([
|
|
49
|
+
{ provider: 'Gemini SDK', model: 'gemini-2.5-flash', status: 'active' },
|
|
50
|
+
{ provider: 'Groq', model: 'llama-3.3-70b', status: 'active' },
|
|
51
|
+
{ provider: 'OpenRouter', model: 'claude-sonnet-4', status: 'fallback' },
|
|
52
|
+
{ provider: 'Gemini CLI', model: 'default', status: 'inactive' },
|
|
53
|
+
]);
|
|
54
|
+
logger.blank();
|
|
55
|
+
|
|
56
|
+
// ── Spinner — succeed ─────────────────────────────
|
|
57
|
+
logger.info('▸ Spinner (succeed)');
|
|
58
|
+
const s1 = logger.spinner('Loading configuration...');
|
|
59
|
+
s1.start();
|
|
60
|
+
await sleep(1000);
|
|
61
|
+
s1.text('Almost done...');
|
|
62
|
+
await sleep(600);
|
|
63
|
+
s1.succeed('Configuration loaded');
|
|
64
|
+
logger.blank();
|
|
65
|
+
|
|
66
|
+
// ── Spinner — fail ────────────────────────────────
|
|
67
|
+
logger.info('▸ Spinner (fail)');
|
|
68
|
+
const s2 = logger.spinner('Connecting to remote...');
|
|
69
|
+
s2.start();
|
|
70
|
+
await sleep(800);
|
|
71
|
+
s2.fail('Connection timed out');
|
|
72
|
+
logger.blank();
|
|
73
|
+
|
|
74
|
+
// ── setCLILevel ───────────────────────────────────
|
|
75
|
+
logger.info('▸ setCLILevel demo');
|
|
76
|
+
logger.blank();
|
|
77
|
+
|
|
78
|
+
logger.setCLILevel('quiet');
|
|
79
|
+
logger.info(' [quiet] This box should NOT appear:');
|
|
80
|
+
logger.box('You should not see this', { title: 'Hidden' });
|
|
81
|
+
|
|
82
|
+
logger.setCLILevel('normal');
|
|
83
|
+
logger.box('CLI level restored to normal', {
|
|
84
|
+
title: 'Visible Again',
|
|
85
|
+
borderStyle: 'rounded',
|
|
86
|
+
borderColor: '#00ff00',
|
|
87
|
+
});
|
|
88
|
+
logger.blank();
|
|
89
|
+
|
|
90
|
+
// ── Done ──────────────────────────────────────────
|
|
91
|
+
logger.divider();
|
|
92
|
+
logger.header('Showcase Complete');
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
main().catch(console.error);
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Box primitive — all border styles, colors, titles, multiline.
|
|
3
|
+
* Run: bun playground/demo-box.ts
|
|
4
|
+
*/
|
|
5
|
+
import { Logger } from '../src/Logger.js';
|
|
6
|
+
|
|
7
|
+
const logger = new Logger();
|
|
8
|
+
|
|
9
|
+
function main() {
|
|
10
|
+
logger.header('Box Demos');
|
|
11
|
+
logger.divider();
|
|
12
|
+
logger.blank();
|
|
13
|
+
|
|
14
|
+
// ── Each border style ─────────────────────────────
|
|
15
|
+
logger.info('1. Border styles');
|
|
16
|
+
logger.blank();
|
|
17
|
+
|
|
18
|
+
logger.box('Single border style', { borderStyle: 'single', title: 'single' });
|
|
19
|
+
logger.blank();
|
|
20
|
+
|
|
21
|
+
logger.box('Rounded border style (default)', { borderStyle: 'rounded', title: 'rounded' });
|
|
22
|
+
logger.blank();
|
|
23
|
+
|
|
24
|
+
logger.box('Double border style', { borderStyle: 'double', title: 'double' });
|
|
25
|
+
logger.blank();
|
|
26
|
+
|
|
27
|
+
logger.box('Bold border style', { borderStyle: 'bold', title: 'bold' });
|
|
28
|
+
logger.blank();
|
|
29
|
+
|
|
30
|
+
// ── With / without title ──────────────────────────
|
|
31
|
+
logger.info('2. Title variations');
|
|
32
|
+
logger.blank();
|
|
33
|
+
|
|
34
|
+
logger.box('This box has a title above', { title: 'With Title' });
|
|
35
|
+
logger.blank();
|
|
36
|
+
|
|
37
|
+
logger.box('This box has no title');
|
|
38
|
+
logger.blank();
|
|
39
|
+
|
|
40
|
+
// ── Border colors ─────────────────────────────────
|
|
41
|
+
logger.info('3. Border colors');
|
|
42
|
+
logger.blank();
|
|
43
|
+
|
|
44
|
+
logger.box('Red border', { title: 'Error', borderColor: '#ff4444', borderStyle: 'bold' });
|
|
45
|
+
logger.blank();
|
|
46
|
+
|
|
47
|
+
logger.box('Green border', { title: 'Success', borderColor: '#00cc66', borderStyle: 'rounded' });
|
|
48
|
+
logger.blank();
|
|
49
|
+
|
|
50
|
+
logger.box('Blue border', { title: 'Info', borderColor: '#4488ff', borderStyle: 'double' });
|
|
51
|
+
logger.blank();
|
|
52
|
+
|
|
53
|
+
logger.box('Yellow border', { title: 'Warning', borderColor: '#ffaa00', borderStyle: 'single' });
|
|
54
|
+
logger.blank();
|
|
55
|
+
|
|
56
|
+
// ── Multiline content ─────────────────────────────
|
|
57
|
+
logger.info('4. Multiline content');
|
|
58
|
+
logger.blank();
|
|
59
|
+
|
|
60
|
+
logger.box(
|
|
61
|
+
[
|
|
62
|
+
'feat(providers): add multi-provider AI support',
|
|
63
|
+
'',
|
|
64
|
+
'Added Gemini SDK, Groq, and OpenRouter providers',
|
|
65
|
+
'with automatic detection and fallback chain.',
|
|
66
|
+
].join('\n'),
|
|
67
|
+
{ title: 'Commit #1', borderStyle: 'rounded', borderColor: '#ff6b6b' },
|
|
68
|
+
);
|
|
69
|
+
logger.blank();
|
|
70
|
+
|
|
71
|
+
// ── Long content ──────────────────────────────────
|
|
72
|
+
logger.info('5. Long single-line content');
|
|
73
|
+
logger.blank();
|
|
74
|
+
|
|
75
|
+
logger.box(
|
|
76
|
+
'This is a very long line of text that should demonstrate how the box renderer handles content that extends beyond a typical terminal width to verify wrapping or truncation behavior.',
|
|
77
|
+
{ title: 'Long Content', borderStyle: 'rounded' },
|
|
78
|
+
);
|
|
79
|
+
logger.blank();
|
|
80
|
+
|
|
81
|
+
logger.divider();
|
|
82
|
+
logger.info('Box demos complete.');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
main();
|