UNPKG

cz-conventional-changelog-befe

Version:
208 lines (184 loc) 5.6 kB
'use strict'; var fs = require('fs'); var findUp = require('find-up'); var readPkgUp = require('read-pkg-up'); var tranz = require('tranz').default; var tranzCommitIcafe = require('tranz-commit-icafe'); var Table = require('cli-table3'); var isPrimitive = require('is-primitive'); // const stripAnsi = require('strip-ansi') var stringWidth = require('string-width'); var cliWidth = require('cli-width'); var tableConfig = { chars: { top: '', 'top-mid': '', 'top-left': '', 'top-right': '', bottom: '', 'bottom-mid': '', 'bottom-left': '', 'bottom-right': '', left: '', 'left-mid': '', mid: '', 'mid-mid': '', right: '', 'right-mid': '', middle: '' }, style: { 'padding-left': 0, 'padding-right': 0 } }; function newTable(config) { return new Table(Object.assign({}, tableConfig, config)); } function rightPadTypes(tObj, tkeys, lang) { var emptyString = getLanguage(lang) === 'zh' ? '                     ' : ' '; var table = newTable({ colWidths: [12] }); var list = tkeys.map(function (key) { table.push([key + ':', tObj[key].description]); return { object: tObj[key], value: key }; }); var lines = table.toString().split('\n'); return list.map(function (d, i) { return { name: trimRight(sliceString(lines[i], cliWidth() - 4)), value: d.value }; }); } var LANGUAGE_MAP = { zh: 'zh_cn', zh_cn: 'zh_cn', en: 'en_us', en_us: 'en_us' }; function getGitRootPath() { var gitPath = findUp.sync('.git'); if (gitPath && fs.statSync(gitPath).isDirectory()) { return gitPath; } return gitPath; } // 给tiny-i18n map 参数 function getLanguage(language) { var lang = (language + '').toLowerCase(); return LANGUAGE_MAP[lang] || 'zh_cn'; } // 拿到 package.json 中的配置 function getPackageJsonConfigs(cwd) { var _ref = readPkgUp.sync({ normalize: true, cwd: cwd }) || {}, _ref$pkg = _ref.pkg, pkg = _ref$pkg === undefined ? {} : _ref$pkg; return pkg; } function issuesFormat(spaceId, message) { return tranz(message, [tranzCommitIcafe({ spaceId: spaceId, readPkg: false })]); } function getVal(val) { var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref2$keyName = _ref2.keyName, keyName = _ref2$keyName === undefined ? 'name' : _ref2$keyName; if (val && val.hasOwnProperty && val.hasOwnProperty(keyName)) { val = val[keyName]; } if (val == null) { val = ''; } if (isPrimitive(val) || Array.isArray(val) && val.every(isPrimitive)) { return val; } if (Array.isArray(val)) { val = val.map(function (v) { return getVal(v, { keyName: keyName }); }); } return val; } function simplifyData() { var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref3$flattenKeys = _ref3.flattenKeys, flattenKeys = _ref3$flattenKeys === undefined ? [] : _ref3$flattenKeys, _ref3$rollbackKeys = _ref3.rollbackKeys, rollbackKeys = _ref3$rollbackKeys === undefined ? [] : _ref3$rollbackKeys, _ref3$defaultKeyName = _ref3.defaultKeyName, defaultKeyName = _ref3$defaultKeyName === undefined ? 'name' : _ref3$defaultKeyName; function find(array, value) { return array.find(function (x) { if (typeof x === 'string') { return x === value; } return x && x.name === value; }); } var newData = {}; for (var key in data) { if (data.hasOwnProperty(key)) { var val = data[key]; var tmp = void 0; if (tmp = find(flattenKeys, key)) { (function () { var keyName = tmp && tmp.valueKey ? tmp.valueKey : defaultKeyName; if (Array.isArray(val)) { val = val.map(function (v) { return getVal(v, { keyName: keyName }); }); } else { val = getVal(val, { keyName: keyName }); } })(); } if (tmp = find(rollbackKeys, key)) { (function () { var keyName = tmp && tmp.valueKey ? tmp.valueKey : defaultKeyName; val.forEach(function (v) { newData[v.propertyName] = getVal(v, { keyName: keyName }); }); })(); } else { newData[key] = getVal(val, { keyName: defaultKeyName }); } } } return newData; } function sliceString(string, maxLen) { var _ref4 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, _ref4$deltaLen = _ref4.deltaLen, deltaLen = _ref4$deltaLen === undefined ? 0 : _ref4$deltaLen; // let string = string var ellipsis = '…'; var ellipsisLen = stringWidth(ellipsis); var isSliced = false; while (deltaLen + stringWidth(string) > maxLen - (string.endsWith(ellipsis) ? 0 : ellipsisLen)) { isSliced = true; if (/\s$/.test(string)) { string = trimRight(string); } else { string = string.slice(0, -1); } } if (isSliced && !string.endsWith(ellipsis)) { string = string + ellipsis; } return string; // .slice(0, maxLen) } function trimRight(str) { return str.replace(/\s+$/, ''); } module.exports = { sliceString: sliceString, trimRight: trimRight, getPackageJsonConfigs: getPackageJsonConfigs, rightPadTypes: rightPadTypes, getLanguage: getLanguage, getGitRootPath: getGitRootPath, getVal: getVal, simplifyData: simplifyData, issuesFormat: issuesFormat, newTable: newTable };