UNPKG

@monkeyscanjump/cloudflare-dyndns

Version:

A robust TypeScript application that automatically updates Cloudflare DNS records when your public IP address changes. Perfect for maintaining consistent domain names for home servers, WireGuard VPN, self-hosted services, or any system with a dynamic IP a

139 lines 4.53 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = void 0; const fs = __importStar(require("fs")); const path = __importStar(require("path")); /** * Handles application logging with console and file output * Supports multiple severity levels and automatic log directory creation */ class Logger { /** * Creates a new logger instance * @param logFile Path to the log file where messages will be stored */ constructor(logFile) { this.debugEnabled = false; this.logFile = logFile; // Create log directory if it doesn't exist const logDir = path.dirname(this.logFile); if (!fs.existsSync(logDir)) { try { fs.mkdirSync(logDir, { recursive: true }); } catch (error) { console.error(`Failed to create log directory ${logDir}: ${error.message}`); } } } /** * Enables or disables debug-level logging * @param enabled Whether debug messages should be logged */ setDebugMode(enabled) { this.debugEnabled = enabled; this.debug(`Debug mode ${enabled ? 'enabled' : 'disabled'}`); } /** * Checks if debug mode is currently enabled * @returns True if debug logging is enabled */ isDebugEnabled() { return this.debugEnabled; } /** * Logs a message with the specified severity level * Writes to both console and log file * @param message Message text to log * @param level Severity level of the message */ log(message, level = 'info') { // Skip debug messages if debug mode is not enabled if (level === 'debug' && !this.debugEnabled) { return; } const timestamp = new Date().toISOString(); const formattedMessage = `${timestamp} [${level.toUpperCase()}] ${message}`; // Always output to console if (level === 'error') { console.error(formattedMessage); } else if (level === 'warn') { console.warn(formattedMessage); } else { console.log(formattedMessage); } // Write to log file try { fs.appendFileSync(this.logFile, formattedMessage + '\n'); } catch (error) { console.error(`Failed to write to log file ${this.logFile}: ${error.message}`); } } /** * Logs a debug-level message * Only logged if debug mode is enabled * @param message Debug message to log */ debug(message) { this.log(message, 'debug'); } /** * Logs an informational message * @param message Info message to log */ info(message) { this.log(message, 'info'); } /** * Logs a warning message * @param message Warning message to log */ warn(message) { this.log(message, 'warn'); } /** * Logs an error message * @param message Error message to log */ error(message) { this.log(message, 'error'); } } exports.Logger = Logger; //# sourceMappingURL=Logger.js.map