'use strict'; var chalk = require('chalk'); /** @param {...any} args */ function errMsg() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var parts = args.slice(); if (parts.length > 1) { parts[0] = chalk.magenta(parts[0]); } return [ chalk.white('evalmd'), chalk.red('ERR!'), ].concat(parts).join(' '); } /** @param {...any} args */ function infoMsg() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var parts = args.slice(); parts[0] = chalk.magenta(parts[0]); return [ chalk.white('evalmd'), chalk.green('info'), ].concat(parts).join(' '); } /** @param {...any} args */ function debugMsg() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var parts = args.slice(); parts[0] = chalk.magenta(parts[0]); return [ chalk.white('evalmd'), chalk.blue('debug'), ].concat(parts).join(' '); } /** @param {unknown} errOrStack */ function cleanStack(errOrStack) { if (errOrStack instanceof Error && errOrStack.stack) { return String(errOrStack).split(/\r\n?|\n/); } if (Array.isArray(errOrStack)) { return errOrStack; } if (errOrStack) { return String(errOrStack).split(/\r\n?|\n/); } return false; } /** * @param {{ debug?: boolean, silence?: boolean, store?: string[] & { all?: string[] } }} [options] */ function createLogger(options) { var opts = options || {}; var debug = Boolean(opts.debug); var silence = Boolean(opts.silence); /** @type {string[] & { all?: string[] }} */ var store = opts.store || []; /** @param {string} data */ function write(data) { var colorLessData = chalk.stripColor(data); if (!store.all) { store.all = []; } store.push(colorLessData); if (!silence) { return process.stderr.write("".concat(data, "\n")); } return undefined; } return { store: store, /** @param {...any} args */ info: function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return write(infoMsg.apply(null, args)); }, /** @param {...any} args */ debug: function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (debug) { return write(debugMsg.apply(null, args)); } return undefined; }, /** @param {unknown} err */ err: function (err) { var lines = cleanStack(err); if (lines) { lines.forEach(function (line) { return write(errMsg(line)); }); } return lines; }, }; } module.exports = createLogger; module.exports.errMsg = errMsg; module.exports.infoMsg = infoMsg; module.exports.debugMsg = debugMsg; module.exports.cleanStack = cleanStack;