UNPKG

vaporwaver-ts

Version:

TypeScript version of the Vaporwaver Python library. Vaporwaver is a Python library for generating vaporwave image art.

59 lines 1.93 kB
import { writeFileSync, appendFileSync, existsSync, mkdirSync } from 'fs'; import { join, dirname } from 'path'; import { fileURLToPath } from 'url'; export class Logger { constructor() { const rootDir = dirname(fileURLToPath(import.meta.url)); const logsDir = join(rootDir, '..', '..', 'logs'); // Ensure logs directory exists if (!existsSync(logsDir)) { mkdirSync(logsDir, { recursive: true }); } this.logFile = join(logsDir, 'vaporwaver.log'); this.debugMode = process.env.VAPORWAVER_DEBUG === 'true'; // Initialize log file if (!existsSync(this.logFile)) { writeFileSync(this.logFile, ''); } } static getInstance() { if (!Logger.instance) { Logger.instance = new Logger(); } return Logger.instance; } formatMessage(level, message, meta) { const timestamp = new Date().toISOString(); const metaStr = meta ? `\n${JSON.stringify(meta, null, 2)}` : ''; return `[${timestamp}] ${level}: ${message}${metaStr}\n`; } log(level, message, meta) { const formattedMessage = this.formatMessage(level, message, meta); appendFileSync(this.logFile, formattedMessage); if (this.debugMode || level === 'ERROR') { console.log(formattedMessage); } } info(message, meta) { this.log('INFO', message, meta); } warn(message, meta) { this.log('WARN', message, meta); } error(message, meta) { this.log('ERROR', message, meta); } debug(message, meta) { if (this.debugMode) { this.log('DEBUG', message, meta); } } clearLogs() { writeFileSync(this.logFile, ''); } setDebugMode(enabled) { this.debugMode = enabled; } } export const logger = Logger.getInstance(); //# sourceMappingURL=logger.js.map