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

110 lines (90 loc) 3.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _drawTable = _interopRequireDefault(require("./drawTable")); var _calculateCellWidthIndex = _interopRequireDefault(require("./calculateCellWidthIndex")); var _makeConfig = _interopRequireDefault(require("./makeConfig")); var _calculateRowHeightIndex = _interopRequireDefault(require("./calculateRowHeightIndex")); var _mapDataUsingRowHeightIndex = _interopRequireDefault(require("./mapDataUsingRowHeightIndex")); var _alignTableData = _interopRequireDefault(require("./alignTableData")); var _padTableData = _interopRequireDefault(require("./padTableData")); var _validateTableData = _interopRequireDefault(require("./validateTableData")); var _stringifyTableData = _interopRequireDefault(require("./stringifyTableData")); var _truncateTableData = _interopRequireDefault(require("./truncateTableData")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @typedef {string} table~cell */ /** * @typedef {table~cell[]} table~row */ /** * @typedef {Object} table~columns * @property {string} alignment Cell content alignment (enum: left, center, right) (default: left). * @property {number} width Column width (default: auto). * @property {number} truncate Number of characters are which the content will be truncated (default: Infinity). * @property {boolean} wrapWord When true the text is broken at the nearest space or one of the special characters * @property {number} paddingLeft Cell content padding width left (default: 1). * @property {number} paddingRight Cell content padding width right (default: 1). */ /** * @typedef {Object} table~border * @property {string} topBody * @property {string} topJoin * @property {string} topLeft * @property {string} topRight * @property {string} bottomBody * @property {string} bottomJoin * @property {string} bottomLeft * @property {string} bottomRight * @property {string} bodyLeft * @property {string} bodyRight * @property {string} bodyJoin * @property {string} joinBody * @property {string} joinLeft * @property {string} joinRight * @property {string} joinJoin */ /** * Used to tell whether to draw a horizontal line. * This callback is called for each non-content line of the table. * The default behavior is to always return true. * * @typedef {Function} drawHorizontalLine * @param {number} index * @param {number} size * @returns {boolean} */ /** * @typedef {Object} table~config * @property {table~border} border * @property {table~columns[]} columns Column specific configuration. * @property {table~columns} columnDefault Default values for all columns. Column specific settings overwrite the default values. * @property {table~drawHorizontalLine} drawHorizontalLine * @property {table~singleLine} singleLine Horizontal lines inside the table are not drawn. */ /** * Generates a text table. * * @param {table~row[]} data * @param {table~config} userConfig * @returns {string} */ const table = (data, userConfig = {}) => { let rows; (0, _validateTableData.default)(data); rows = (0, _stringifyTableData.default)(data); const config = (0, _makeConfig.default)(rows, userConfig); rows = (0, _truncateTableData.default)(data, config); const rowHeightIndex = (0, _calculateRowHeightIndex.default)(rows, config); rows = (0, _mapDataUsingRowHeightIndex.default)(rows, rowHeightIndex, config); rows = (0, _alignTableData.default)(rows, config); rows = (0, _padTableData.default)(rows, config); const cellWidthIndex = (0, _calculateCellWidthIndex.default)(rows[0]); return (0, _drawTable.default)(rows, config.border, cellWidthIndex, rowHeightIndex, config.drawHorizontalLine, config.singleLine); }; var _default = table; exports.default = _default; //# sourceMappingURL=table.js.map