@huddle01/server-sdk
Version:
The Huddle01 Server SDK allows you to perform protected admin actions on your server side, like generating peer access tokens and starting and stopping meeting recordings and livestreams.
142 lines (140 loc) • 4.17 kB
JavaScript
// src/logger.ts
var COLORS = {
black: "\x1B[30m",
red: "\x1B[31m",
green: "\x1B[32m",
yellow: "\x1B[33m",
blue: "\x1B[34m",
magenta: "\x1B[35m",
cyan: "\x1B[36m",
white: "\x1B[37m",
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;
}
trace(...args) {
if (isTrace) {
const elapsedInMs = `${COLORS.magenta}+${Date.now() - created}ms${COLORS.default}`;
logger.trace(tracePrefix, ...args, elapsedInMs);
}
}
debug(...args) {
if (isDebug) {
const elapsedInMs = `${COLORS.magenta}+${Date.now() - created}ms${COLORS.default}`;
logger.debug(debugPrefix, ...args, elapsedInMs);
}
}
info(...args) {
if (isInfo) {
const elapsedInMs = `${COLORS.magenta}+${Date.now() - created}ms${COLORS.default}`;
logger.info(infoPrefix, ...args, elapsedInMs);
}
}
warn(...args) {
if (isWarning) {
const elapsedInMs = `${COLORS.magenta}+${Date.now() - created}ms${COLORS.default}`;
logger.warn(warnPrefix, ...args, elapsedInMs);
}
}
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(`HuddleServerSdk:${moduleName}`)
};
export { createLogger, mainLogger, setLogLevel, setLoggerFactory };