UNPKG

tdesign-mobile-vue

Version:
184 lines (180 loc) 6.6 kB
/** * tdesign v1.9.3 * (c) 2025 TDesign Group * @license MIT */ import _defineProperty from '@babel/runtime/helpers/defineProperty'; import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator'; import _regeneratorRuntime from '@babel/runtime/regenerator'; import { promises } from 'fs'; import { mapToParentName } from './components.js'; import '@babel/runtime/helpers/slicedToArray'; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var LOG_TYPES = ["\uD83D\uDEA8 Breaking Changes", "\uD83D\uDE80 Features", "\uD83D\uDC1E Bug Fixes"]; var targetPlatform = "web"; function generateChangelogJson(_x, _x2) { return _generateChangelogJson.apply(this, arguments); } function _generateChangelogJson() { _generateChangelogJson = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(changelogPath, platform) { var logMd, detailedLogs, compMap, _t; return _regeneratorRuntime.wrap(function (_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 1; return promises.readFile(changelogPath, "utf-8"); case 1: logMd = _context.sent; targetPlatform = platform; detailedLogs = parseMd2Json(logMd); compMap = formatJson2CompMap(detailedLogs); console.log("\x1B[32m%s\x1B[0m", "\u2705 Sync CHANGELOG.md to changelog.json"); return _context.abrupt("return", compMap); case 2: _context.prev = 2; _t = _context["catch"](0); console.error("\x1B[31m%s\x1B[0m", "\u274C Fail to generate changelog.json", "\x1B[33m", _t); return _context.abrupt("return", {}); case 3: case "end": return _context.stop(); } }, _callee, null, [[0, 2]]); })); return _generateChangelogJson.apply(this, arguments); } function parseMd2Json(logMd) { var headerRegex = /^\s*##\s*🌈\s*(\d+\.\d+\.\d+)\s+`(\d{4}-\d{2}-\d{2})`\s*$/gm; var matches = Array.from(logMd.matchAll(headerRegex)); var logs = matches.map(function (match, i) { var version = match[1]; var date = match[2]; var start = match.index + match[0].length; var end = i < matches.length - 1 ? matches[i + 1].index : logMd.length; var log = logMd.slice(start, end).trim(); return { version: version, date: date, log: parseLogByType(log) }; }); return logs; } function parseLogByType(logBlock) { var logs = {}; LOG_TYPES.forEach(function (type) { var typeRegex = new RegExp("### ".concat(type, "\\r?\\n([\\s\\S]+?)(?=### |$)"), "g"); var matches = Array.from(logBlock.matchAll(typeRegex)); if (matches.length > 0) { var logBlock2 = matches.map(function (match) { return match[1]; }).join("\n"); var entries = extractLogEntries(logBlock2); logs[type] = groupLogByComponent(entries); } }); return logs; } function extractLogEntries(logBlock) { var lines = logBlock.split("\n").filter(function (line) { return line.trim() !== ""; }); var logs = []; var currEntry = ""; for (var i = 0; i < lines.length; i++) { var line = lines[i].trim(); if (!line) continue; var isChildEntry = /^\s+-/.test(lines[i]); var isParentEntry = line.startsWith("-") && !isChildEntry; if (isParentEntry) { if (currEntry) { logs.push(currEntry.trim()); } currEntry = line.substring(1).trim(); } else if (isChildEntry) { var childContent = line.replace(/^\s*-\s*/, "").trim(); currEntry += "\n".concat(childContent); } } logs.push(currEntry.trim()); return logs; } function groupLogByComponent(entries) { var logs = []; entries.forEach(function (entry) { var nameRegex = /`([^`]+)`:/; var match = entry.match(nameRegex); if (!match) return; var rawName = match[1]; var compName = mapToParentName(rawName, targetPlatform); if (!compName) return; if (rawName === compName) { var logWithoutPrefix = entry.replace(nameRegex, "").trim(); var lines = logWithoutPrefix.split("\n").map(function (line) { return line.trim(); }); var isGroupedLog = lines[0].startsWith("@"); if (isGroupedLog) { logs.push({ component: compName, description: logWithoutPrefix }); } else { lines.forEach(function (line) { logs.push({ component: compName, description: line }); }); } } else { logs.push({ component: compName, description: entry }); } }); return logs; } function formatJson2CompMap(logJson) { var compMap = {}; logJson.forEach(function (entry) { var version = entry.version, date = entry.date, log = entry.log; Object.keys(log).forEach(function (type) { var _log$type; (_log$type = log[type]) === null || _log$type === void 0 || _log$type.forEach(function (item) { var component = item.component, description = item.description; if (!compMap[component]) { compMap[component] = []; } var versionEntry = compMap[component].find(function (v) { return v.version === version; }); if (!versionEntry) { versionEntry = { version: version, date: date }; compMap[component].push(versionEntry); } if (!versionEntry[type]) { versionEntry[type] = []; } versionEntry[type].push(description); }); }); }); var sortedCompMap = Object.keys(compMap).sort(function (a, b) { return a.localeCompare(b); }).reduce(function (acc, key) { return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, compMap[key])); }, {}); return sortedCompMap; } export { LOG_TYPES, generateChangelogJson as default }; //# sourceMappingURL=index.js.map