UNPKG

solace

Version:

Alternative to console log which automatically beautifies the output

137 lines (112 loc) 4.09 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _prettyjson = require('prettyjson'); var _prettyjson2 = _interopRequireDefault(_prettyjson); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); var _cliTable = require('cli-table'); var _cliTable2 = _interopRequireDefault(_cliTable); var asTitle = function asTitle(title) { return _chalk2['default'].cyan(title); }; var asError = function asError(text) { return _chalk2['default'].red(text); }; var niceJson = function niceJson(value) { return _prettyjson2['default'].render(value, {}) + '\n'; }; var formatValue = function formatValue(value) { return _lodash2['default'].isDate(value) ? (0, _moment2['default'])(value).format() : '' + value; }; var objWithoutHeaders = function objWithoutHeaders(value, headers) { var cloned = _lodash2['default'].cloneDeep(value); _lodash2['default'].forEach(headers, function (h) { delete cloned[h]; }); return cloned; }; var objToRow = function objToRow(value, headers) { var size = _lodash2['default'].size(headers); if (!value) { return _lodash2['default'].fill(Array(size + 1), '___'); } var isBigger = size > 2; var extra = isBigger ? JSON.stringify(objWithoutHeaders(value, headers)) : ''; var row = _lodash2['default'].map(headers, function (key) { return formatValue(value[key]); }); row.push(extra); return row; }; var tablify = function tablify(rows) { var headers = _lodash2['default'].keys(_lodash2['default'].first(rows)); var headersWithExtra = _lodash2['default'].cloneDeep(headers); headersWithExtra.push('...'); var table = new _cliTable2['default']({ head: headersWithExtra }); _lodash2['default'].forEach(rows, function (row) { table.push(objToRow(row, headers)); }); return table.toString() + '\n'; }; exports['default'] = { name: 'outline', title: 'Format the output with the main outlines', writeError: function writeError(messager, message, options) { var hasTitle = _lodash2['default'].isString(options.title); if (hasTitle) { messager.write(asTitle(options.title) + ': ' + asError(message) + '\n'); } else { messager.write(asError(message) + '\n'); } }, //end write writeSimpleValue: function writeSimpleValue(messager, message, options) { var hasTitle = _lodash2['default'].isString(options.title); if (hasTitle) { messager.write(asTitle(options.title) + (': ' + message + '\n')); } else { messager.write(message + '\n'); } }, //end write writeObject: function writeObject(messager, message, options) { var hasTitle = _lodash2['default'].isString(options.title); if (hasTitle) { messager.write(asTitle(options.title) + ':\n\n' + niceJson(message)); } else { messager.write(niceJson(message)); } }, writeEmptyArray: function writeEmptyArray(messager, message, options) { var hasTitle = _lodash2['default'].isString(options.title); if (hasTitle) { messager.write(asTitle(options.title) + ': ' + niceJson(message)); } else { messager.write(niceJson(message)); } }, writeArrayOfSimpleValues: function writeArrayOfSimpleValues(messager, message, options) { var hasTitle = _lodash2['default'].isString(options.title); if (hasTitle) { messager.write(asTitle(options.title) + ':\n\n' + niceJson(message)); } else { messager.write(niceJson(message)); } }, writeArrayOfSimpleObjects: function writeArrayOfSimpleObjects(messager, message, options) { var hasTitle = _lodash2['default'].isString(options.title); if (hasTitle) { messager.write(asTitle(options.title) + ':\n\n' + tablify(message)); } else { messager.write(tablify(message)); } } }; module.exports = exports['default'];