UNPKG

@proofkit/fmodata

Version:

FileMaker OData API client

70 lines (69 loc) 2.19 kB
const TTY_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 levels = ["debug", "info", "success", "warn", "error"]; function shouldPublishLog(currentLogLevel, logLevel) { return levels.indexOf(logLevel) >= levels.indexOf(currentLogLevel); } const levelColors = { info: TTY_COLORS.fg.blue, success: TTY_COLORS.fg.green, warn: TTY_COLORS.fg.yellow, error: TTY_COLORS.fg.red, debug: TTY_COLORS.fg.magenta }; const formatMessage = (level, message, colorsEnabled) => { const timestamp = (/* @__PURE__ */ new Date()).toISOString(); if (colorsEnabled) { return `${TTY_COLORS.dim}${timestamp}${TTY_COLORS.reset} ${levelColors[level]}${level.toUpperCase()}${TTY_COLORS.reset} ${TTY_COLORS.bright}[FMODATA]:${TTY_COLORS.reset} ${message}`; } return `${timestamp} ${level.toUpperCase()} [FMODATA]: ${message}`; }; const createLogger = (options) => { const enabled = (options == null ? void 0 : options.disabled) !== true; const logLevel = (options == null ? void 0 : options.level) ?? "error"; const colorsEnabled = (options == null ? void 0 : options.disableColors) !== true; const LogFunc = (level, message, args = []) => { if (!(enabled && shouldPublishLog(logLevel, level))) { return; } const formattedMessage = formatMessage(level, message, colorsEnabled); 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; } }; }; createLogger(); export { TTY_COLORS, createLogger, levels, shouldPublishLog }; //# sourceMappingURL=logger.js.map