better-auth
Version:
The most comprehensive authentication library for TypeScript.
62 lines (60 loc) • 1.88 kB
JavaScript
const levels = ["info", "success", "warn", "error", "debug"];
function shouldPublishLog(currentLogLevel, logLevel) {
return levels.indexOf(logLevel) <= levels.indexOf(currentLogLevel);
}
const colors = {
reset: "\x1B[0m",
bright: "\x1B[1m",
dim: "\x1B[2m",
fg: {
red: "\x1B[31m",
green: "\x1B[32m",
yellow: "\x1B[33m",
blue: "\x1B[34m",
magenta: "\x1B[35m"}};
const levelColors = {
info: colors.fg.blue,
success: colors.fg.green,
warn: colors.fg.yellow,
error: colors.fg.red,
debug: colors.fg.magenta
};
const formatMessage = (level, message) => {
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
return `${colors.dim}${timestamp}${colors.reset} ${levelColors[level]}${level.toUpperCase()}${colors.reset} ${colors.bright}[Better Auth]:${colors.reset} ${message}`;
};
const createLogger = (options) => {
const enabled = options?.disabled !== true;
const logLevel = options?.level ?? "error";
const LogFunc = (level, message, args = []) => {
if (!enabled || !shouldPublishLog(logLevel, level)) {
return;
}
const formattedMessage = formatMessage(level, message);
if (!options || typeof options.log !== "function") {
if (level === "error") {
console.error(formattedMessage, ...args);
} else if (level === "warn") {
console.warn(formattedMessage, ...args);
} else {
console.log(formattedMessage, ...args);
}
return;
}
options.log(level === "success" ? "info" : level, message, ...args);
};
const logger2 = Object.fromEntries(
levels.map((level) => [
level,
(...[message, ...args]) => LogFunc(level, message, args)
])
);
return {
...logger2,
get level() {
return logLevel;
}
};
};
const logger = createLogger();
export { logger as a, createLogger as c, levels as l, shouldPublishLog as s };