UNPKG

neuwo-api

Version:

TypeScript/JavaScript SDK client for the Neuwo content classification API

145 lines 3.55 kB
/** * Logging system for Neuwo API SDK. * * Provides configurable logging with different levels and the ability * to enable/disable logging. Tokens are automatically sanitised in log output. */ /** * Log levels matching standard severity. */ export var LogLevel; (function (LogLevel) { LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG"; LogLevel[LogLevel["INFO"] = 1] = "INFO"; LogLevel[LogLevel["WARNING"] = 2] = "WARNING"; LogLevel[LogLevel["ERROR"] = 3] = "ERROR"; LogLevel[LogLevel["NONE"] = 999] = "NONE"; })(LogLevel || (LogLevel = {})); /** * Global logger configuration. */ const loggerConfig = { level: LogLevel.WARNING, enabled: true, }; /** * Sanitise sensitive information from log messages. */ function sanitise(message) { // Replace tokens in URLs and headers return message .replace(/token=[^&\s]+/gi, "token=***") .replace(/["']token["']:\s*["'][^"']+["']/gi, '"token": "***"') .replace(/Authorization:\s*[^\s]+/gi, "Authorization: ***"); } /** * Format log message with timestamp and level. */ function formatMessage(level, message) { const timestamp = new Date().toISOString(); return `${timestamp} - neuwo-api - ${level} - ${sanitise(message)}`; } /** * Log a message if logging is enabled and level is sufficient. */ function log(level, levelName, message) { if (!loggerConfig.enabled || level < loggerConfig.level) { return; } const formatted = formatMessage(levelName, message); switch (level) { case LogLevel.DEBUG: case LogLevel.INFO: console.log(formatted); break; case LogLevel.WARNING: console.warn(formatted); break; case LogLevel.ERROR: console.error(formatted); break; } } /** * Logger instance with methods for each log level. */ export const logger = { /** * Log debug message. */ debug(message) { log(LogLevel.DEBUG, "DEBUG", message); }, /** * Log info message. */ info(message) { log(LogLevel.INFO, "INFO", message); }, /** * Log warning message. */ warning(message) { log(LogLevel.WARNING, "WARNING", message); }, /** * Log error message. */ error(message) { log(LogLevel.ERROR, "ERROR", message); }, }; /** * Configure the logger with custom settings. * * @param level - Minimum log level to display * @example * ```typescript * import { setupLogger, LogLevel } from 'neuwo-api'; * * // Enable debug logging * setupLogger(LogLevel.DEBUG); * * // Only show warnings and errors * setupLogger(LogLevel.WARNING); * ``` */ export function setupLogger(level = LogLevel.WARNING) { loggerConfig.level = level; loggerConfig.enabled = true; } /** * Disable all logging output. * * @example * ```typescript * import { disableLogger } from 'neuwo-api'; * * disableLogger(); * ``` */ export function disableLogger() { loggerConfig.enabled = false; } /** * Enable logging with specified level. * * @param level - Minimum log level to display (default: WARNING) * @example * ```typescript * import { enableLogger, LogLevel } from 'neuwo-api'; * * enableLogger(LogLevel.INFO); * ``` */ export function enableLogger(level = LogLevel.WARNING) { loggerConfig.level = level; loggerConfig.enabled = true; } /** * Get current logger configuration. */ export function getLoggerConfig() { return { ...loggerConfig }; } //# sourceMappingURL=logger.js.map