UNPKG

better-auth

Version:

The most comprehensive authentication library for TypeScript.

62 lines (60 loc) 1.88 kB
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 };