3 Object.defineProperty(exports, "__esModule", {
7 var _lodash = require('lodash');
9 var _lodash2 = _interopRequireDefault(_lodash);
11 var _getBorderCharacters = require('./getBorderCharacters');
13 var _getBorderCharacters2 = _interopRequireDefault(_getBorderCharacters);
15 var _validateConfig = require('./validateConfig');
17 var _validateConfig2 = _interopRequireDefault(_validateConfig);
19 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22 * Merges user provided border characters with the default border ("honeywell") characters.
24 * @param {Object} border
27 const makeBorder = function makeBorder() {
28 let border = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
30 return Object.assign({}, (0, _getBorderCharacters2.default)('honeywell'), border);
34 * Creates a configuration for every column using default
35 * values for the missing configuration properties.
37 * @param {number} columnCount
38 * @param {Object} columns
39 * @param {Object} columnDefault
42 const makeColumns = function makeColumns(columnCount) {
43 let columns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
44 let columnDefault = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
46 _lodash2.default.times(columnCount, index => {
47 if (_lodash2.default.isUndefined(columns[index])) {
51 columns[index] = Object.assign({
57 }, columnDefault, columns[index]);
64 * @typedef {Object} columnConfig
65 * @property {string} alignment
66 * @property {number} width
67 * @property {number} truncate
68 * @property {number} paddingLeft
69 * @property {number} paddingRight
73 * @typedef {Object} streamConfig
74 * @property {columnConfig} columnDefault
75 * @property {Object} border
76 * @property {columnConfig[]}
77 * @property {number} columnCount Number of columns in the table (required).
81 * Makes a new configuration object out of the userConfig object
82 * using default values for the missing configuration properties.
84 * @param {streamConfig} userConfig
88 exports.default = function () {
89 let userConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
91 (0, _validateConfig2.default)('streamConfig.json', userConfig);
93 const config = _lodash2.default.cloneDeep(userConfig);
95 if (!config.columnDefault || !config.columnDefault.width) {
96 throw new Error('Must provide config.columnDefault.width when creating a stream.');
99 if (!config.columnCount) {
100 throw new Error('Must provide config.columnCount.');
103 config.border = makeBorder(config.border);
104 config.columns = makeColumns(config.columnCount, config.columns, config.columnDefault);