solace
Version:
Alternative to console log which automatically beautifies the output
137 lines (112 loc) • 4.09 kB
JavaScript
;
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'];