UNPKG

@huddle01/web-core

Version:

The Huddle01 Javascript SDK offers a comprehensive suite of methods and event listeners that allow for seamless real-time audio and video communication with minimal coding required.

144 lines (142 loc) 4.41 kB
// src/logger.ts var COLORS = { red: "\x1B[31m", green: "\x1B[32m", yellow: "\x1B[33m", magenta: "\x1B[35m", cyan: "\x1B[36m", default: "\x1B[39m" }; var defaultLevel = "error"; var created = Date.now(); function createDefaultLoggerFactory() { return () => { const trace = (...args) => { console.trace(...args); }; const debug = (...args) => { console.debug(...args); }; const info = (...args) => { console.info(...args); }; const warn = (...args) => { console.warn(...args); }; const error = (...args) => { console.error(...args); }; return { trace, debug, info, warn, error }; }; } var wrapLogger = (logger, moduleName, logLevel) => { let isTrace = false; let isDebug = false; let isInfo = false; let isWarning = false; let isError = false; let _level = logLevel; let _logger = logger; const tracePrefix = `${COLORS.magenta}[TRACE]${COLORS.default} ${moduleName}`; const debugPrefix = `${COLORS.cyan}[DEBUG]${COLORS.default} ${moduleName}`; const infoPrefix = `${COLORS.green}[INFO]${COLORS.default} ${moduleName}`; const warnPrefix = `${COLORS.yellow}[WARN]${COLORS.default} ${moduleName}`; const errorPrefix = `${COLORS.red}[ERROR]${COLORS.default} ${moduleName}`; const result = new class { init() { isTrace = ["trace"].includes(_level ?? defaultLevel); isDebug = ["trace", "debug"].includes(_level ?? defaultLevel); isInfo = ["trace", "debug", "info"].includes(_level ?? defaultLevel); isWarning = ["trace", "debug", "info", "warn"].includes( _level ?? defaultLevel ); isError = ["trace", "debug", "info", "warn", "error"].includes( _level ?? defaultLevel ); } get logger() { return _logger; } set logger(value) { _logger = value; } get level() { return _level; } set level(value) { _level = value; } // biome-ignore lint/suspicious/noExplicitAny: need any trace(...args) { if (isTrace) { const elapsedInMs = `${COLORS.magenta}+${Date.now() - created}ms${COLORS.default}`; logger.trace(tracePrefix, ...args, elapsedInMs); } } // biome-ignore lint/suspicious/noExplicitAny: need any debug(...args) { if (isDebug) { const elapsedInMs = `${COLORS.magenta}+${Date.now() - created}ms${COLORS.default}`; logger.debug(debugPrefix, ...args, elapsedInMs); } } // biome-ignore lint/suspicious/noExplicitAny: need any info(...args) { if (isInfo) { const elapsedInMs = `${COLORS.magenta}+${Date.now() - created}ms${COLORS.default}`; logger.info(infoPrefix, ...args, elapsedInMs); } } // biome-ignore lint/suspicious/noExplicitAny: need any warn(...args) { if (isWarning) { const elapsedInMs = `${COLORS.magenta}+${Date.now() - created}ms${COLORS.default}`; logger.warn(warnPrefix, ...args, elapsedInMs); } } // biome-ignore lint/suspicious/noExplicitAny: need any error(...args) { if (isError) { const elapsedInMs = `${COLORS.magenta}+${Date.now() - created}ms${COLORS.default}`; logger.error(errorPrefix, ...args, elapsedInMs); } } }(); return result; }; var actualLoggerFactory = createDefaultLoggerFactory(); var loggers = /* @__PURE__ */ new Map(); var createLogger = (moduleName, logLevel) => { let wrappedLogger = loggers.get(moduleName); if (!wrappedLogger) { const logger = actualLoggerFactory(); wrappedLogger = wrapLogger(logger, moduleName, logLevel ?? defaultLevel); loggers.set(moduleName, wrappedLogger); } else { wrappedLogger.level = logLevel ?? defaultLevel; } wrappedLogger.init(); return wrappedLogger; }; var setLogLevel = (level) => { defaultLevel = level; for (const [moduleName] of Array.from(loggers.entries())) { loggers.set(moduleName, createLogger(moduleName, level)); } }; var setLoggerFactory = (loggerFactory) => { actualLoggerFactory = loggerFactory; for (const [moduleName, logger] of Array.from(loggers.entries())) { loggers.set(moduleName, createLogger(moduleName, logger.level)); } }; var mainLogger = { createSubLogger: (moduleName) => createLogger(`HuddleWebCore:${moduleName}`) }; export { createLogger, mainLogger, setLogLevel, setLoggerFactory };