UNPKG

luhn-generator

Version:

A generator of numbers that passes the validation of Luhn algorithm or Luhn formula, also known as the 'modulus 10' or 'mod 10' algorithm

101 lines (82 loc) 2.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep")); var _isUndefined2 = _interopRequireDefault(require("lodash/isUndefined")); var _times2 = _interopRequireDefault(require("lodash/times")); var _getBorderCharacters = _interopRequireDefault(require("./getBorderCharacters")); var _validateConfig = _interopRequireDefault(require("./validateConfig")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Merges user provided border characters with the default border ("honeywell") characters. * * @param {Object} border * @returns {Object} */ const makeBorder = (border = {}) => { return Object.assign({}, (0, _getBorderCharacters.default)('honeywell'), border); }; /** * Creates a configuration for every column using default * values for the missing configuration properties. * * @param {number} columnCount * @param {Object} columns * @param {Object} columnDefault * @returns {Object} */ const makeColumns = (columnCount, columns = {}, columnDefault = {}) => { (0, _times2.default)(columnCount, index => { if ((0, _isUndefined2.default)(columns[index])) { columns[index] = {}; } columns[index] = Object.assign({ alignment: 'left', paddingLeft: 1, paddingRight: 1, truncate: Infinity, wrapWord: false }, columnDefault, columns[index]); }); return columns; }; /** * @typedef {Object} columnConfig * @property {string} alignment * @property {number} width * @property {number} truncate * @property {number} paddingLeft * @property {number} paddingRight */ /** * @typedef {Object} streamConfig * @property {columnConfig} columnDefault * @property {Object} border * @property {columnConfig[]} * @property {number} columnCount Number of columns in the table (required). */ /** * Makes a new configuration object out of the userConfig object * using default values for the missing configuration properties. * * @param {streamConfig} userConfig * @returns {Object} */ const makeStreamConfig = (userConfig = {}) => { (0, _validateConfig.default)('streamConfig.json', userConfig); const config = (0, _cloneDeep2.default)(userConfig); if (!config.columnDefault || !config.columnDefault.width) { throw new Error('Must provide config.columnDefault.width when creating a stream.'); } if (!config.columnCount) { throw new Error('Must provide config.columnCount.'); } config.border = makeBorder(config.border); config.columns = makeColumns(config.columnCount, config.columns, config.columnDefault); return config; }; var _default = makeStreamConfig; exports.default = _default; //# sourceMappingURL=makeStreamConfig.js.map