dockest
Version:
Dockest is an integration testing tool aimed at alleviating the process of evaluating unit tests whilst running multi-container Docker applications.
88 lines • 3.85 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = void 0;
const readline_1 = __importDefault(require("readline"));
const chalk_1 = require("chalk");
const constants_1 = require("./constants");
const getLogArgs = (message, payload) => {
const { data = undefined, service, symbol, endingNewLines = 0, startingNewLines = 0, success } = payload;
let logArgs = [];
if (startingNewLines > 0) {
logArgs = logArgs.concat(new Array(startingNewLines).fill('\n'));
}
const derivedService = service || 'Dockest';
const derivedSymbol = symbol || '🌈';
logArgs.push(`${derivedSymbol} ${derivedService} ${derivedSymbol} ${success ? (0, chalk_1.greenBright)(message) : message}`);
if (data && Logger.logLevel === constants_1.LOG_LEVEL.DEBUG) {
logArgs.push(JSON.stringify(data, null, 2));
}
if (endingNewLines > 0) {
logArgs = logArgs.concat(new Array(endingNewLines).fill('\n'));
}
return logArgs;
};
class Logger {
constructor(serviceName) {
this.serviceName = '';
this.runnerSymbol = '🦇 ';
this.setRunnerSymbol = (symbol) => {
this.runnerSymbol = symbol;
};
this.error = (message, payload = {}) => Logger.error(message, { ...payload, service: this.serviceName, symbol: this.runnerSymbol });
this.warn = (message, payload = {}) => Logger.warn(message, { ...payload, service: this.serviceName, symbol: this.runnerSymbol });
this.info = (message, payload = {}) => Logger.info(message, { ...payload, service: this.serviceName, symbol: this.runnerSymbol });
this.debug = (message, payload = {}) => Logger.debug(message, { ...payload, service: this.serviceName, symbol: this.runnerSymbol });
this.serviceName = serviceName || 'UNKNOWN';
}
}
exports.Logger = Logger;
Logger.logLevel = constants_1.LOG_LEVEL.INFO;
Logger.error = (message, payload = {}) => {
if (Logger.logLevel >= constants_1.LOG_LEVEL.ERROR) {
console.error(...getLogArgs(message, payload).map((logArg) => (0, chalk_1.redBright)(logArg))); // eslint-disable-line no-console
}
};
Logger.warn = (message, payload = {}) => {
if (Logger.logLevel >= constants_1.LOG_LEVEL.WARN) {
console.warn(...getLogArgs(message, payload).map((logArg) => (0, chalk_1.yellowBright)(logArg))); // eslint-disable-line no-console
}
};
Logger.info = (message, payload = {}) => {
if (Logger.logLevel >= constants_1.LOG_LEVEL.INFO) {
console.info(...getLogArgs(message, payload)); // eslint-disable-line no-console
}
};
Logger.debug = (message, payload = {}) => {
if (Logger.logLevel >= constants_1.LOG_LEVEL.DEBUG) {
console.debug(...getLogArgs(message, payload)); // eslint-disable-line no-console
}
};
Logger.replacePrevLine = ({ message, isLast = false }) => {
readline_1.default.cursorTo(process.stdout, 0, undefined);
process.stdout.write(message);
if (isLast) {
process.stdout.write('\n\n');
}
};
Logger.measurePerformance = (perfStart, opts = {}) => {
if (perfStart !== 0) {
const perfTime = Math.floor((Date.now() - perfStart) / 1000);
let hours = Math.floor(perfTime / 3600);
let minutes = Math.floor((perfTime - hours * 3600) / 60);
let seconds = perfTime - hours * 3600 - minutes * 60;
if (hours < 10) {
hours = `0${hours}`;
}
if (minutes < 10) {
minutes = `0${minutes}`;
}
if (seconds < 10) {
seconds = `0${seconds}`;
}
Logger.info(`${opts.logPrefix || ''} Elapsed time: ${hours}:${minutes}:${seconds}`);
}
};
//# sourceMappingURL=logger.js.map