UNPKG

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