UNPKG

@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
"use strict"; 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