UNPKG

tdesign-mobile-vue

Version:
1 lines 14 kB
{"version":3,"file":"index.mjs","sources":["../../../../../src/_common/docs/plugins/changelog-to-json/index.ts"],"sourcesContent":["/* eslint-disable no-console */\n/* eslint-disable no-use-before-define */\nimport { promises } from 'fs';\nimport { mapToParentName } from './components';\nimport type { ComponentLog, ComponentLogMap, LogItem, Logs, LogType, Platform, VersionLog } from './types';\n\nexport const LOG_TYPES = ['🚨 Breaking Changes', '🚀 Features', '🐞 Bug Fixes'] as const;\n\nlet targetPlatform: Platform = 'web';\n\nexport default async function generateChangelogJson(changelogPath: string, platform: Platform) {\n try {\n const logMd = await promises.readFile(changelogPath, 'utf-8');\n targetPlatform = platform;\n const detailedLogs = parseMd2Json(logMd);\n const compMap = formatJson2CompMap(detailedLogs);\n console.log('\\x1b[32m%s\\x1b[0m', '✅ Sync CHANGELOG.md to changelog.json');\n return compMap;\n } catch (error) {\n console.error('\\x1b[31m%s\\x1b[0m', '❌ Fail to generate changelog.json', '\\x1b[33m', error);\n return {};\n }\n}\n\n/**\n * 将整份 Markdown 先根据版本号拆分\n */\nfunction parseMd2Json(logMd: string) {\n const headerRegex = /^\\s*##\\s*🌈\\s*(\\d+\\.\\d+\\.\\d+)\\s+`(\\d{4}-\\d{2}-\\d{2})`\\s*$/gm;\n const matches = Array.from(logMd.matchAll(headerRegex));\n\n const logs = matches.map((match, i) => {\n const version = match[1];\n const date = match[2];\n\n const start = match.index + match[0].length;\n const end = i < matches.length - 1 ? matches[i + 1].index : logMd.length;\n const log = logMd.slice(start, end).trim();\n\n return {\n version,\n date,\n log: parseLogByType(log),\n };\n });\n\n return logs;\n}\n\n/**\n * 进一步根据指定的变更类型拆分\n */\nfunction parseLogByType(logBlock: string) {\n const logs: Logs = {};\n\n LOG_TYPES.forEach((type) => {\n const typeRegex = new RegExp(`### ${type}\\\\r?\\\\n([\\\\s\\\\S]+?)(?=### |$)`, 'g');\n const matches = Array.from(logBlock.matchAll(typeRegex));\n\n if (matches.length > 0) {\n const logBlock = matches.map((match) => match[1]).join('\\n');\n const entries = extractLogEntries(logBlock);\n logs[type] = groupLogByComponent(entries);\n }\n });\n\n return logs;\n}\n\n/**\n * 获取每种变更类型里面的每一段日志\n * - case 1: 单独一行 -> 作为一条\n * - case 2: 存在父子列表 -> 使用换行符,合并为一条\n */\nfunction extractLogEntries(logBlock: string) {\n const lines = logBlock.split('\\n').filter((line) => line.trim() !== '');\n const logs: string[] = [];\n\n let currEntry = '';\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n\n // 跳过空行\n if (!line) continue;\n\n // 是否为子项(短横线前面有空格)\n const isChildEntry = /^\\s+-/.test(lines[i]);\n\n // 是否为父项(直接以短横线开头)\n const isParentEntry = line.startsWith('-') && !isChildEntry;\n\n if (isParentEntry) {\n // 如果是父项,保存之前的日志\n if (currEntry) {\n logs.push(currEntry.trim());\n }\n // 开始新项,去掉开头的 -\n currEntry = line.substring(1).trim();\n } else if (isChildEntry) {\n // 如果是子项,添加到当前项中\n const childContent = line.replace(/^\\s*-\\s*/, '').trim();\n currEntry += `\\n${childContent}`;\n }\n }\n\n // 处理最后一项\n logs.push(currEntry.trim());\n return logs;\n}\n\n/**\n * 根据每一条日志提及的组件名,将其归类\n */\nfunction groupLogByComponent(entries: string[]) {\n const logs: LogItem[] = [];\n\n entries.forEach((entry) => {\n const nameRegex = /`([^`]+)`:/;\n const match = entry.match(nameRegex);\n if (!match) return;\n\n const rawName = match[1];\n const compName = mapToParentName(rawName, targetPlatform);\n if (!compName) return;\n\n // 当前日志为父组件,去掉前缀\n if (rawName === compName) {\n const logWithoutPrefix = entry.replace(nameRegex, '').trim();\n const lines = logWithoutPrefix.split('\\n').map((line) => line.trim());\n const isGroupedLog = lines[0].startsWith('@');\n // 首行存在 @用户名 -> 同一个PR\n if (isGroupedLog) {\n // 整体插入,渲染为列表\n logs.push({ component: compName, description: logWithoutPrefix });\n } else {\n // 每一行渲染为单独的日志项\n lines.forEach((line) => {\n logs.push({ component: compName, description: line });\n });\n }\n } else {\n // 子组件保留前缀,且整体插入\n logs.push({ component: compName, description: entry });\n }\n });\n\n return logs;\n}\n\n/**\n * 将解析后的日志 JSON 转换为以组件名作为 key 的映射格式\n */\nfunction formatJson2CompMap(logJson: VersionLog[]) {\n const compMap: ComponentLogMap = {};\n\n logJson.forEach((entry) => {\n const { version, date, log } = entry;\n\n (Object.keys(log) as LogType[]).forEach((type) => {\n log[type]?.forEach((item: LogItem) => {\n const { component, description } = item;\n\n if (!compMap[component]) {\n compMap[component] = [];\n }\n\n // 查找当前组件的版本记录\n let versionEntry = compMap[component].find(\n (v) => v.version === version\n );\n\n if (!versionEntry) {\n versionEntry = {\n version,\n date,\n } as ComponentLog;\n compMap[component].push(versionEntry);\n }\n\n if (!versionEntry[type]) {\n versionEntry[type] = [];\n }\n versionEntry[type].push(description);\n });\n });\n });\n\n // 按组件名字母顺序排序\n const sortedCompMap = Object.keys(compMap)\n .sort((a, b) => a.localeCompare(b))\n .reduce((acc, key) => ({ ...acc, [key]: compMap[key] }), {});\n\n return sortedCompMap as ComponentLogMap;\n}\n"],"names":["LOG_TYPES","targetPlatform","generateChangelogJson","_x","_x2","_generateChangelogJson","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","changelogPath","platform","logMd","detailedLogs","compMap","_t","wrap","_context","prev","next","promises","readFile","sent","parseMd2Json","formatJson2CompMap","console","log","abrupt","error","stop","headerRegex","matches","Array","from","matchAll","logs","map","match","i","version","date","start","index","length","end","slice","trim","parseLogByType","logBlock","forEach","type","typeRegex","RegExp","concat","join","entries","extractLogEntries","groupLogByComponent","lines","split","filter","line","currEntry","isChildEntry","test","isParentEntry","startsWith","push","substring","childContent","replace","entry","nameRegex","rawName","compName","mapToParentName","logWithoutPrefix","isGroupedLog","component","description","logJson","Object","keys","_log$type","item","versionEntry","find","v","sortedCompMap","sort","a","b","localeCompare","reduce","acc","key","_objectSpread","_defineProperty"],"mappings":"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"}