@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
JavaScript
// 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 };