@proofkit/fmodata
Version:
FileMaker OData API client
70 lines (69 loc) • 2.19 kB
JavaScript
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