@sap/cli-core
Version:
Command-Line Interface (CLI) Core Module
64 lines (63 loc) • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.get = exports.configure = void 0;
const types_1 = require("../types");
const LogLevel2Console = {
[types_1.LogLevel.INACTIVE]: "inactive",
[types_1.LogLevel.ERROR]: "error",
[types_1.LogLevel.WARN]: "warn",
[types_1.LogLevel.INFO]: "info",
[types_1.LogLevel.DEBUG]: "debug",
[types_1.LogLevel.TRACE]: "info",
};
let logLevel = types_1.LogLevel.INACTIVE;
let loggers;
let customLogger;
const configure = ({ logLevel: newLogLevel, loggers: newLoggers, customLogger: newCustomLogger, }) => {
if (newLogLevel) {
logLevel = newLogLevel;
}
if (newLoggers === "RESET") {
loggers = undefined;
}
else if (newLoggers) {
loggers = newLoggers;
}
if (newCustomLogger === "RESET") {
customLogger = undefined;
}
else if (newCustomLogger) {
customLogger = newCustomLogger;
}
};
exports.configure = configure;
const logMessage = (namespace, level) => (...args) => {
if (level <= logLevel && (loggers ? loggers.test(namespace) : true)) {
// @ts-expect-error ts(7053)
// eslint-disable-next-line
customLogger?.[LogLevel2Console[level]]
? // @ts-expect-error ts(7053)
customLogger[LogLevel2Console[level]](...args)
: // @ts-expect-error ts(7053)
// eslint-disable-next-line
console[LogLevel2Console[level]](...[
`[${namespace}:${level === types_1.LogLevel.TRACE ? "trace" : LogLevel2Console[level]}:${new Date().toISOString()}] ${args[0]}`,
...args.slice(1),
]);
}
};
const get = (namespace) => {
return {
output: customLogger?.output
? customLogger.output
: // eslint-disable-next-line
(...args) => console.log(...args),
error: logMessage(namespace, types_1.LogLevel.ERROR),
warn: logMessage(namespace, types_1.LogLevel.WARN),
info: logMessage(namespace, types_1.LogLevel.INFO),
log: logMessage(namespace, types_1.LogLevel.INFO),
debug: logMessage(namespace, types_1.LogLevel.DEBUG),
trace: logMessage(namespace, types_1.LogLevel.TRACE),
};
};
exports.get = get;