@messari/sdk
Version:
Messari SDK provides a type-safe, intuitive interface for accessing Messari's suite of crypto data and AI APIs.
74 lines • 2.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.noOpLogger = exports.createFilteredLogger = exports.makeConsoleLogger = exports.LogLevel = void 0;
exports.logLevelSeverity = logLevelSeverity;
const utils_1 = require("./utils");
/**
* The severity level of a log message.
*/
var LogLevel;
(function (LogLevel) {
LogLevel["NONE"] = "none";
LogLevel["DEBUG"] = "debug";
LogLevel["INFO"] = "info";
LogLevel["WARN"] = "warn";
LogLevel["ERROR"] = "error";
})(LogLevel || (exports.LogLevel = LogLevel = {}));
/**
* Creates a logger that logs messages to the console.
* @param name - The name of the logger.
* @returns A logger function.
*/
const makeConsoleLogger = (name) => {
return (level, message, extraInfo) => {
if (level === LogLevel.NONE) {
return;
}
console[level](`${name} ${level}:`, message, extraInfo || "");
};
};
exports.makeConsoleLogger = makeConsoleLogger;
/**
* Transforms a log level into a comparable (numerical) value ordered by severity.
* @param level - The log level to transform.
* @returns A numerical value representing the severity of the log level.
*/
function logLevelSeverity(level) {
switch (level) {
case LogLevel.NONE:
return 100;
case LogLevel.DEBUG:
return 20;
case LogLevel.INFO:
return 40;
case LogLevel.WARN:
return 60;
case LogLevel.ERROR:
return 80;
default:
return (0, utils_1.assertNever)(level);
}
}
/**
* Creates a logger that only logs messages with a severity greater than or equal to the specified level.
* @param logger - The logger to filter.
* @param minLevel - The minimum log level to log.
* @returns A filtered logger.
*/
const createFilteredLogger = (logger, minLevel) => {
const minSeverity = logLevelSeverity(minLevel);
return (level, message, extraInfo) => {
if (logLevelSeverity(level) >= minSeverity) {
logger(level, message, extraInfo);
}
};
};
exports.createFilteredLogger = createFilteredLogger;
/**
* Returns a logger that does nothing (no-op).
* Use this when you want to completely disable logging.
* @returns A no-op logger.
*/
const noOpLogger = () => { };
exports.noOpLogger = noOpLogger;
//# sourceMappingURL=logging.js.map