UNPKG

lib-tools

Version:

The lib-tools helps you simplify the build, bundle, test and npm packaging workflows for Typescript, JavaScript, Angular library projects and assets module projects.

119 lines 16.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = exports.LogLevel = void 0; const colorize_1 = require("./colorize"); // eslint-disable-next-line no-shadow var LogLevel; (function (LogLevel) { LogLevel[LogLevel["None"] = 0] = "None"; LogLevel[LogLevel["Fatal"] = 1] = "Fatal"; LogLevel[LogLevel["Error"] = 2] = "Error"; LogLevel[LogLevel["Warn"] = 4] = "Warn"; LogLevel[LogLevel["Info"] = 8] = "Info"; LogLevel[LogLevel["Debug"] = 16] = "Debug"; })(LogLevel = exports.LogLevel || (exports.LogLevel = {})); class Logger { constructor(loggerOptions) { this._minLogLevel = LogLevel.Info; this.loggerOptions = loggerOptions || {}; if (this.loggerOptions.logLevel != null) { this._minLogLevel = typeof this.loggerOptions.logLevel === 'string' ? this.toLogLevel(this.loggerOptions.logLevel) : this.loggerOptions.logLevel; } } set minLogLevel(minLogLevel) { this._minLogLevel = typeof minLogLevel === 'string' ? this.toLogLevel(minLogLevel) : minLogLevel; } log(level, message, optionalParams) { const logLevel = typeof level === 'string' ? this.toLogLevel(level) : level; if (this._minLogLevel < logLevel || !message) { return; } const prefix = this.getPrefix(logLevel); let logMsg = `${prefix}${message.trimLeft()}`; if (this.loggerOptions.color !== false && logLevel === LogLevel.Warn) { logMsg = colorize_1.colorize(logMsg, 'yellow'); } else if (this.loggerOptions.color !== false && (logLevel === LogLevel.Error || logLevel === LogLevel.Fatal)) { logMsg = colorize_1.colorize(logMsg, 'red'); } if (optionalParams) { if (logLevel === LogLevel.Warn) { console.warn(logMsg, optionalParams); } else { // eslint-disable-next-line no-console console.log(logMsg, optionalParams); } } else { if (logLevel === LogLevel.Warn) { console.warn(logMsg); } else { // eslint-disable-next-line no-console console.log(logMsg); } } } debug(message, optionalParams) { this.log(LogLevel.Debug, message, optionalParams); } info(message, optionalParams) { this.log(LogLevel.Info, message, optionalParams); } warn(message, optionalParams) { this.log(LogLevel.Warn, message, optionalParams); } error(message, optionalParams) { this.log(LogLevel.Error, message, optionalParams); } fatal(message, optionalParams) { this.log(LogLevel.Fatal, message, optionalParams); } toLogLevel(logLevelString) { switch (logLevelString) { case 'debug': return LogLevel.Debug; case 'info': return LogLevel.Info; case 'warn': return LogLevel.Warn; case 'error': return LogLevel.Error; case 'fatal': return LogLevel.Fatal; case 'none': case 'disable': return LogLevel.None; default: return LogLevel.None; } } getPrefix(logLevel) { let prefix = ''; if (this.loggerOptions.name) { prefix += `${this.loggerOptions.name} `; } if (logLevel === LogLevel.Debug && this.loggerOptions.debugPrefix) { prefix += `${this.loggerOptions.debugPrefix} `; } else if (logLevel === LogLevel.Info && this.loggerOptions.infoPrefix) { prefix += `${this.loggerOptions.infoPrefix} `; } else if (logLevel === LogLevel.Warn && this.loggerOptions.warnPrefix) { prefix += `${this.loggerOptions.warnPrefix} `; } else if (logLevel === LogLevel.Error && this.loggerOptions.errorPrefix) { prefix += `${this.loggerOptions.errorPrefix} `; } else if (logLevel === LogLevel.Fatal && (this.loggerOptions.fatalPrefix || this.loggerOptions.errorPrefix)) { prefix += `${this.loggerOptions.fatalPrefix || this.loggerOptions.errorPrefix} `; } return prefix; } } exports.Logger = Logger; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJ1dGlscy9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXNDO0FBRXRDLHFDQUFxQztBQUNyQyxJQUFZLFFBT1g7QUFQRCxXQUFZLFFBQVE7SUFDaEIsdUNBQVEsQ0FBQTtJQUNSLHlDQUFTLENBQUE7SUFDVCx5Q0FBUyxDQUFBO0lBQ1QsdUNBQVEsQ0FBQTtJQUNSLHVDQUFRLENBQUE7SUFDUiwwQ0FBVSxDQUFBO0FBQ2QsQ0FBQyxFQVBXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBT25CO0FBd0JELE1BQWEsTUFBTTtJQVFmLFlBQVksYUFBNEI7UUFOaEMsaUJBQVksR0FBYSxRQUFRLENBQUMsSUFBSSxDQUFDO1FBTzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUN6QyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUNyQyxJQUFJLENBQUMsWUFBWTtnQkFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLFFBQVE7b0JBQzNDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO29CQUM5QyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7U0FDekM7SUFDTCxDQUFDO0lBWkQsSUFBSSxXQUFXLENBQUMsV0FBc0M7UUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNyRyxDQUFDO0lBWUQsR0FBRyxDQUFDLEtBQWdDLEVBQUUsT0FBZSxFQUFFLGNBQXdCO1FBQzNFLE1BQU0sUUFBUSxHQUFHLE9BQU8sS0FBSyxLQUFL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QyxXQUFXLENBQUMsRUFBRTtZQUMxRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxDQUFDO1NBQ3BGO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUNKO0FBaEhELHdCQWdIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbG9yaXplIH0gZnJvbSAnLi9jb2xvcml6ZSc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbmV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgICBOb25lID0gMCxcbiAgICBGYXRhbCA9IDEsXG4gICAgRXJyb3IgPSAyLFxuICAgIFdhcm4gPSA0LFxuICAgIEluZm8gPSA4LFxuICAgIERlYnVnID0gMTZcbn1cblxuZXhwb3J0IHR5cGUgTG9nTGV2ZWxTdHJpbmcgPSAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJyB8ICdmYXRhbCcgfCAnbm9uZScgfCAnZGlzYWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyT3B0aW9ucyB7XG4gICAgbG9nTGV2ZWw/OiBMb2dMZXZlbCB8IExvZ0xldmVsU3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgZGVidWdQcmVmaXg/OiBzdHJpbmc7XG4gICAgaW5mb1ByZWZpeD86IHN0cmluZztcbiAgICB3YXJuUHJlZml4Pzogc3RyaW5nO1xuICAgIGVycm9yUHJlZml4Pzogc3RyaW5nO1xuICAgIGZhdGFsUHJlZml4Pzogc3RyaW5nO1xuICAgIGNvbG9yPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXJCYXNlIHtcbiAgICBsb2cobGV2ZWw6IExvZ0xldmVsIHwgTG9nTGV2ZWxTdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgb3B0aW9uYWxQYXJhbXM/OiB1bmtub3duKTogdm9pZDtcbiAgICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbmFsUGFyYW1zPzogdW5rbm93bik6IHZvaWQ7XG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbmFsUGFyYW1zPzogdW5rbm93bik6IHZvaWQ7XG4gICAgd2FybihtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbmFsUGFyYW1zPzogdW5rbm93bik6IHZvaWQ7XG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBvcHRpb25hbFBhcmFtcz86IHVua25vd24pOiB2b2lkO1xuICAgIGZhdGFsKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9uYWxQYXJhbXM/OiB1bmtub3duKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIExvZ2dlciBpbXBsZW1lbnRzIExvZ2dlckJhc2Uge1xuICAgIHJlYWRvbmx5IGxvZ2dlck9wdGlvbnM6IExvZ2dlck9wdGlvbnM7XG4gICAgcHJpdmF0ZSBfbWluTG9nTGV2ZWw6IExvZ0xldmVsID0gTG9nTGV2ZWwuSW5mbztcblxuICAgIHNldCBtaW5Mb2dMZXZlbChtaW5Mb2dMZXZlbDogTG9nTGV2ZWwgfCBMb2dMZXZlbFN0cmluZykge1xuICAgICAgICB0aGlzLl9taW5Mb2dMZXZlbCA9IHR5cGVvZiBtaW5Mb2dMZXZlbCA9PT0gJ3N0cmluZycgPyB0aGlzLnRvTG9nTGV2ZWwobWluTG9nTGV2ZWwpIDogbWluTG9nTGV2ZWw7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IobG9nZ2VyT3B0aW9uczogTG9nZ2VyT3B0aW9ucykge1xuICAgICAgICB0aGlzLmxvZ2dlck9wdGlvbnMgPSBsb2dnZXJPcHRpb25zIHx8IHt9O1xuICAgICAgICBpZiAodGhpcy5sb2dnZXJPcHRpb25zLmxvZ0xldmVsICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX21pbkxvZ0xldmVsID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5sb2dnZXJPcHRpb25zLmxvZ0xldmVsID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMudG9Mb2dMZXZlbCh0aGlzLmxvZ2dlck9wdGlvbnMubG9nTGV2ZWwpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5sb2dnZXJPcHRpb25zLmxvZ0xldmVsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbG9nKGxldmVsOiBMb2dMZXZlbCB8IExvZ0xldmVsU3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbmFsUGFyYW1zPzogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBjb25zdCBsb2dMZXZlbCA9IHR5cGVvZiBsZXZlbCA9PT0gJ3N0cmluZycgPyB0aGlzLnRvTG9nTGV2ZWwobGV2ZWwpIDogbGV2ZWw7XG5cbiAgICAgICAgaWYgKHRoaXMuX21pbkxvZ0xldmVsIDwgbG9nTGV2ZWwgfHwgIW1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuZ2V0UHJlZml4KGxvZ0xldmVsKTtcblxuICAgICAgICBsZXQgbG9nTXNnID0gYCR7cHJlZml4fSR7bWVzc2FnZS50cmltTGVmdCgpfWA7XG5cbiAgICAgICAgaWYgKHRoaXMubG9nZ2VyT3B0aW9ucy5jb2xvciAhPT0gZmFsc2UgJiYgbG9nTGV2ZWwgPT09IExvZ0xldmVsLldhcm4pIHtcbiAgICAgICAgICAgIGxvZ01zZyA9IGNvbG9yaXplKGxvZ01zZywgJ3llbGxvdycpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubG9nZ2VyT3B0aW9ucy5jb2xvciAhPT0gZmFsc2UgJiYgKGxvZ0xldmVsID09PSBMb2dMZXZlbC5FcnJvciB8fCBsb2dMZXZlbCA9PT0gTG9nTGV2ZWwuRmF0YWwpKSB7XG4gICAgICAgICAgICBsb2dNc2cgPSBjb2xvcml6ZShsb2dNc2csICdyZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25hbFBhcmFtcykge1xuICAgICAgICAgICAgaWYgKGxvZ0xldmVsID09PSBMb2dMZXZlbC5XYXJuKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGxvZ01zZywgb3B0aW9uYWxQYXJhbXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGxvZ01zZywgb3B0aW9uYWxQYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGxvZ0xldmVsID09PSBMb2dMZXZlbC5XYXJuKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGxvZ01zZyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cobG9nTXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9uYWxQYXJhbXM/OiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9nKExvZ0xldmVsLkRlYnVnLCBtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XG4gICAgfVxuXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbmFsUGFyYW1zPzogdW5rbm93bik6IHZvaWQge1xuICAgICAgICB0aGlzLmxvZyhMb2dMZXZlbC5JbmZvLCBtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XG4gICAgfVxuXG4gICAgd2FybihtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbmFsUGFyYW1zPzogdW5rbm93bik6IHZvaWQge1xuICAgICAgICB0aGlzLmxvZyhMb2dMZXZlbC5XYXJuLCBtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XG4gICAgfVxuXG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBvcHRpb25hbFBhcmFtcz86IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2coTG9nTGV2ZWwuRXJyb3IsIG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcbiAgICB9XG5cbiAgICBmYXRhbChtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbmFsUGFyYW1zPzogdW5rbm93bik6IHZvaWQge1xuICAgICAgICB0aGlzLmxvZyhMb2dMZXZlbC5GYXRhbCwgbWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9Mb2dMZXZlbChsb2dMZXZlbFN0cmluZzogTG9nTGV2ZWxTdHJpbmcpOiBMb2dMZXZlbCB7XG4gICAgICAgIHN3aXRjaCAobG9nTGV2ZWxTdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RlYnVnJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gTG9nTGV2ZWwuRGVidWc7XG4gICAgICAgICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gTG9nTGV2ZWwuSW5mbztcbiAgICAgICAgICAgIGNhc2UgJ3dhcm4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBMb2dMZXZlbC5XYXJuO1xuICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgIHJldHVybiBMb2dMZXZlbC5FcnJvcjtcbiAgICAgICAgICAgIGNhc2UgJ2ZhdGFsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gTG9nTGV2ZWwuRmF0YWw7XG4gICAgICAgICAgICBjYXNlICdub25lJzpcbiAgICAgICAgICAgIGNhc2UgJ2Rpc2FibGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBMb2dMZXZlbC5Ob25lO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gTG9nTGV2ZWwuTm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJlZml4KGxvZ0xldmVsOiBMb2dMZXZlbCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBwcmVmaXggPSAnJztcbiAgICAgICAgaWYgKHRoaXMubG9nZ2VyT3B0aW9ucy5uYW1lKSB7XG4gICAgICAgICAgICBwcmVmaXggKz0gYCR7dGhpcy5sb2dnZXJPcHRpb25zLm5hbWV9IGA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9nTGV2ZWwgPT09IExvZ0xldmVsLkRlYnVnICYmIHRoaXMubG9nZ2VyT3B0aW9ucy5kZWJ1Z1ByZWZpeCkge1xuICAgICAgICAgICAgcHJlZml4ICs9IGAke3RoaXMubG9nZ2VyT3B0aW9ucy5kZWJ1Z1ByZWZpeH0gYDtcbiAgICAgICAgfSBlbHNlIGlmIChsb2dMZXZlbCA9PT0gTG9nTGV2ZWwuSW5mbyAmJiB0aGlzLmxvZ2dlck9wdGlvbnMuaW5mb1ByZWZpeCkge1xuICAgICAgICAgICAgcHJlZml4ICs9IGAke3RoaXMubG9nZ2VyT3B0aW9ucy5pbmZvUHJlZml4fSBgO1xuICAgICAgICB9IGVsc2UgaWYgKGxvZ0xldmVsID09PSBMb2dMZXZlbC5XYXJuICYmIHRoaXMubG9nZ2VyT3B0aW9ucy53YXJuUHJlZml4KSB7XG4gICAgICAgICAgICBwcmVmaXggKz0gYCR7dGhpcy5sb2dnZXJPcHRpb25zLndhcm5QcmVmaXh9IGA7XG4gICAgICAgIH0gZWxzZSBpZiAobG9nTGV2ZWwgPT09IExvZ0xldmVsLkVycm9yICYmIHRoaXMubG9nZ2VyT3B0aW9ucy5lcnJvclByZWZpeCkge1xuICAgICAgICAgICAgcHJlZml4ICs9IGAke3RoaXMubG9nZ2VyT3B0aW9ucy5lcnJvclByZWZpeH0gYDtcbiAgICAgICAgfSBlbHNlIGlmIChsb2dMZXZlbCA9PT0gTG9nTGV2ZWwuRmF0YWwgJiYgKHRoaXMubG9nZ2VyT3B0aW9ucy5mYXRhbFByZWZpeCB8fCB0aGlzLmxvZ2dlck9wdGlvbnMuZXJyb3JQcmVmaXgpKSB7XG4gICAgICAgICAgICBwcmVmaXggKz0gYCR7dGhpcy5sb2dnZXJPcHRpb25zLmZhdGFsUHJlZml4IHx8IHRoaXMubG9nZ2VyT3B0aW9ucy5lcnJvclByZWZpeH0gYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcmVmaXg7XG4gICAgfVxufVxuIl19