{"version":3,"file":"index.mjs","sources":["../../../../../src/_common/docs/plugins/generate-llms/index.ts"],"sourcesContent":["/* eslint-disable no-console */\n\nimport { promises, statSync } from 'fs';\nimport path from 'path';\n\nimport { parseFrontmatter, splitTitle, cleanSiteHtml, demoteHeadings } from './markdown';\nimport { SPLINE_LABELS, SPLINE_ORDER, getComponentMap } from './libs';\nimport type {\n  ComponentDoc,\n  ComponentDocParserOptions,\n  GenerateLlmsOptions,\n  IsDemoSlot,\n  ParseComponentDoc,\n} from './types';\n\nexport type {\n  BodyTransformer,\n  ComponentDoc,\n  ComponentDocParserOptions,\n  ComponentMap,\n  FrontmatterResult,\n  GenerateLlmsOptions,\n  IsDemoSlot,\n  ParseComponentDoc,\n  Platform,\n  ReadDemoCode,\n  ReadComponentDoc,\n} from './types';\n\n// 重新导出通用解析与渲染工具，供各组件库复用\nexport {\n  parseFrontmatter,\n  splitTitle,\n  cleanSiteHtml,\n  stripSiteBlocks,\n  convertTdCodeBlock,\n  stripCoverageBadges,\n  demoteHeadings,\n} from './markdown';\nexport { SPLINE_LABELS, SPLINE_ORDER, getComponentMap } from './libs';\n\n/** 判断 demo 目录是否存在（同步）。 */\nfunction isDirectorySync(p: string): boolean {\n  try {\n    return statSync(p).isDirectory();\n  } catch {\n    return false;\n  }\n}\n\n/**\n * 默认的 demo 占位符判断：匹配组件目录下的 `_example/<demoName>` 目录。\n */\nexport const defaultIsDemoSlot: IsDemoSlot = (componentDir, demoName) =>\n  isDirectorySync(path.join(componentDir, '_example', demoName));\n\n/** 默认的 demo 占位符正则（{{ demoName }}） */\nexport const DEMO_PLACEHOLDER_RE = /\\{\\{\\s*([a-z0-9-]+)\\s*\\}\\}/g;\n\n/**\n * 替换正文中的 `{{ demo }}` 占位符为真实源码块。\n * 仅当存在对应 demo 目录时才替换，避免误伤 WXML 模板绑定（如 {{item}}/{{48}}）。\n */\nfunction replaceDemoSlots(\n  content: string,\n  componentDir: string,\n  readDemoCode: (componentDir: string, demoName: string) => string,\n  isDemoSlot: IsDemoSlot = defaultIsDemoSlot\n): string {\n  return content.replace(DEMO_PLACEHOLDER_RE, (match, demoName: string) => {\n    if (!isDemoSlot(componentDir, demoName)) return match;\n    return readDemoCode(componentDir, demoName);\n  });\n}\n\n/**\n * 组装「默认文档解析管道」：读取原文 -> 解析 frontmatter -> 替换 demo -> 清理正文。\n *\n * 这是通用解析方法所在：各组件库调用它构建自己的 `parseComponentDoc`，\n * 并可按需覆盖 demo 判断、正文清理变压器、frontmatter 字段等。\n */\nexport function createComponentDocParser(options: ComponentDocParserOptions): ParseComponentDoc {\n  const {\n    readComponentDoc,\n    readDemoCode,\n    isDemoSlot = defaultIsDemoSlot,\n    transformers,\n    titleKey = 'title',\n    descriptionKey = 'description',\n    splineKey = 'spline',\n    componentMap,\n    parseTitle = splitTitle,\n  } = options;\n\n  return async (componentDir, slug) => {\n    const raw = await readComponentDoc(componentDir, slug);\n    if (!raw) return null;\n\n    const { data, content } = parseFrontmatter(raw);\n    const rawTitle = data[titleKey];\n    if (!rawTitle) return null;\n\n    const { title: enTitle, subtitle } = parseTitle(rawTitle);\n    // 组件名：优先取组件 Map 注册的导出名（首项），回退为英文 title\n    const component = componentMap?.[slug]?.[0] || enTitle;\n\n    // demo 占位符替换\n    const demoResolved = replaceDemoSlots(content, componentDir, readDemoCode, isDemoSlot);\n    // 正文清理：默认使用小程序站点清理，可通过 transformers 覆盖\n    const body = (transformers ?? [cleanSiteHtml]).reduce(\n      (block, transform) => transform(block, { slug, componentDir }),\n      demoResolved\n    );\n\n    return {\n      slug,\n      title: enTitle,\n      subtitle,\n      description: data[descriptionKey] || '',\n      spline: data[splineKey] || '',\n      component,\n      body,\n    };\n  };\n}\n\n/**\n * YAML 标量转义：若值含冒号 / 井号 / 引号 / 换行等特殊字符，则用双引号包裹并转义，\n * 避免破坏 frontmatter 结构。\n */\nfunction yamlScalar(value: string): string {\n  const v = value ?? '';\n  if (/[\"'#:\\n\\r[\\]{}]/.test(v)) {\n    return `\"${v.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r')}\"`;\n  }\n  return v;\n}\n\n/**\n * 渲染单篇组件文档的 Markdown。\n */\nexport function renderComponentMarkdown(doc: ComponentDoc): string {\n  const fm = [\n    '---',\n    `title: ${yamlScalar(doc.title)}`,\n    `subtitle: ${yamlScalar(doc.subtitle)}`,\n    `description: ${yamlScalar(doc.description)}`,\n    `spline: ${yamlScalar(doc.spline)}`,\n    `component: ${yamlScalar(doc.component)}`,\n    '---',\n    '',\n  ].join('\\n');\n  return `${fm}\\n${doc.body.trim()}\\n`;\n}\n\n/**\n * 渲染 llms-full.txt 中单个组件的文档片段：\n * 以「## 组件名 中文副标题」标题开头，附 frontmatter 描述引用，随后为正文（标题整体降一级）。\n *\n * 与单篇 `components/<slug>.md` 不同，聚合文件内不输出 frontmatter ——\n * 多篇文档拼接后 YAML 原文会成为正文噪音（`---` 被渲染为分隔线，或与上一行组合成 setext 标题）。\n * 层级约定：分组 `#`、组件 `##`、组件内标题 `###` 起，避免分组与组件标题层级倒挂。\n */\nexport function renderComponentSection(doc: ComponentDoc): string {\n  const heading = doc.subtitle ? `${doc.title} ${doc.subtitle}` : doc.title;\n  const lines = [`## ${heading}`];\n  if (doc.description) {\n    lines.push('', `> ${doc.description}`);\n  }\n  lines.push('', demoteHeadings(doc.body.trim()));\n  return lines.join('\\n');\n}\n\n/**\n * 拼接组件文档链接：配置了 `siteBaseUrl` 时输出绝对链接（便于 LLM 在任意位置直接抓取），\n * 否则输出相对链接 `./components/<slug>.md`（相对 llms.txt 所在目录）。\n */\nexport function resolveDocUrl(slug: string, siteBaseUrl?: string): string {\n  const rel = `components/${slug}.md`;\n  const base = siteBaseUrl?.replace(/\\/+$/, '');\n  if (!base) return `./${rel}`;\n  return `${base}/${rel}`;\n}\n\nfunction renderIndexLine(doc: ComponentDoc, siteBaseUrl?: string): string {\n  const titleText = doc.subtitle ? `${doc.title} ${doc.subtitle}` : doc.title;\n  return `- [${titleText}](${resolveDocUrl(doc.slug, siteBaseUrl)})：${doc.description}`;\n}\n\n/**\n * 渲染 llms.txt 索引：按 spline 分类分组，缺失 spline 的组件归入「其他」分组（排在末尾）。\n */\nexport function renderLlmsTxt(\n  docs: ComponentDoc[],\n  siteTitle: string,\n  siteDescription: string,\n  splineLabels: Record<string, string>,\n  splineOrder: string[] = SPLINE_ORDER,\n  siteBaseUrl?: string\n): string {\n  const groups = new Map<string, ComponentDoc[]>();\n  docs.forEach((doc) => {\n    const list = groups.get(doc.spline);\n    if (list) list.push(doc);\n    else groups.set(doc.spline, [doc]);\n  });\n\n  const knownSplines = splineOrder.filter((spline) => groups.has(spline));\n  const extraSplines = [...groups.keys()]\n    .filter((spline) => spline && !splineOrder.includes(spline))\n    .sort((a, b) => a.localeCompare(b));\n  const labelOf = (spline: string) => splineLabels[spline] || SPLINE_LABELS[spline] || spline;\n\n  const lines = [`# ${siteTitle}`, '', `> ${siteDescription}`, ''];\n\n  [...knownSplines, ...extraSplines].forEach((spline) => {\n    lines.push(`## ${labelOf(spline)}`, '');\n    (groups.get(spline) ?? []).forEach((doc) => lines.push(renderIndexLine(doc, siteBaseUrl)));\n    lines.push('');\n  });\n\n  const ungrouped = groups.get('');\n  if (ungrouped) {\n    lines.push(`## ${labelOf('other')}`, '');\n    ungrouped.forEach((doc) => lines.push(renderIndexLine(doc, siteBaseUrl)));\n    lines.push('');\n  }\n\n  return `${lines.join('\\n').trimEnd()}\\n`;\n}\n\n/**\n * 渲染 llms-full.txt：聚合全部组件文档正文的完整版文件。\n *\n * 遵循 llms.txt 规范 —— `llms-full.txt` 供 LLM 一次性加载全部文档内容：\n * 头部为站点标题与描述，随后按 spline 聚合、逐组件拼接 `renderComponentSection`\n * 渲染的文档片段。层级约定：分组 `#`、组件 `##`、组件内标题 `###` 起。\n */\nexport function renderLlmsFullTxt(\n  docs: ComponentDoc[],\n  siteTitle: string,\n  siteDescription: string,\n  splineLabels: Record<string, string>,\n  splineOrder: string[] = SPLINE_ORDER\n): string {\n  // 按 spline 分组有序渲染，缺失 spline 归入「其他」分组（排在末尾），与 llms.txt 保持一致\n  const groups = new Map<string, ComponentDoc[]>();\n  docs.forEach((doc) => {\n    const list = groups.get(doc.spline);\n    if (list) list.push(doc);\n    else groups.set(doc.spline, [doc]);\n  });\n\n  const knownSplines = splineOrder.filter((spline) => groups.has(spline));\n  const extraSplines = [...groups.keys()]\n    .filter((spline) => spline && !splineOrder.includes(spline))\n    .sort((a, b) => a.localeCompare(b));\n  const labelOf = (spline: string) => splineLabels[spline] || SPLINE_LABELS[spline] || spline;\n\n  const sections: string[] = [`# ${siteTitle}`, `> ${siteDescription}`];\n  const orderedSplines = [...knownSplines, ...extraSplines];\n  orderedSplines.forEach((spline) => {\n    sections.push(`# ${labelOf(spline)}`);\n    (groups.get(spline) ?? []).forEach((doc) => sections.push(renderComponentSection(doc)));\n  });\n  const ungrouped = groups.get('');\n  if (ungrouped) {\n    sections.push(`# ${labelOf('other')}`);\n    ungrouped.forEach((doc) => sections.push(renderComponentSection(doc)));\n  }\n\n  return `${sections.join('\\n\\n')}\\n`;\n}\n\n/**\n * 以构建日志样式打印产物清单：文件名对齐 + 体积（kB）。\n */\nfunction logGeneratedFiles(entries: { relPath: string; content: string }[]): void {\n  const width = Math.max(...entries.map((entry) => entry.relPath.length));\n  entries.forEach((entry) => {\n    const size = `${(Buffer.byteLength(entry.content, 'utf-8') / 1000).toFixed(2)} kB`;\n    console.log(`${entry.relPath.padEnd(width + 2)}${size.padStart(10)}`);\n  });\n}\n\n/**\n * 纯 JS 方法：为每个组件生成面向 LLM 的 Markdown 文档。\n *\n * 与 vite 解耦 —— 仅依赖文件系统，不引入任何构建工具类型。\n * 通用解析方法（frontmatter/demo/splitTitle/cleanSiteHtml 及渲染）均在 common 内，\n * 各组件库只需通过 `parseComponentDoc` 注入自身的解析器（读取文档、处理站点差异、解析 demo），\n * 返回统一的 ComponentDoc，由 common 编排落盘。\n * 产物：`<outputDir>/components/<slug>.md`（每个组件一份）+ `<outputDir>/llms.txt`（按 spline 分组的组件索引）\n *       + `<outputDir>/llms-full.txt`（聚合全部组件文档全文的完整版，供 LLM 一次性加载）。\n *\n * @param options 生成配置。需要显式传入 `componentsRoot`、`outputDir`、`parseComponentDoc`；\n *   组件清单默认按 `platform`（默认 `mobile`）取内置映射，用于补充不在 Map 中但有文档的组件目录。\n * @returns 生成的组件文档列表。\n */\nexport default async function generateLlmsDocs(options: GenerateLlmsOptions): Promise<ComponentDoc[]> {\n  const {\n    componentsRoot,\n    outputDir,\n    platform = 'mobile',\n    componentMap = getComponentMap(platform),\n    splineLabels = {},\n    siteTitle = 'TDesign MiniProgram',\n    siteDescription = 'TDesign 小程序端组件库的 LLM 友好文档索引。',\n    siteBaseUrl,\n    parseComponentDoc,\n    docHostMap,\n  } = options;\n\n  const componentsDocDir = path.join(outputDir, 'components');\n\n  console.log('\\x1b[36m%s\\x1b[0m', `>[generate-llms] 开始生成 LLM 文档（${platform}）...`);\n\n  // 组件清单以 componentMap 的 key 为准（含挂靠组件 docHostMap 的 key），\n  // 再补充不在两者中、且确实为目录（过滤文件与非目录项）的组件目录\n  const allEntries = await promises.readdir(componentsRoot, { withFileTypes: true });\n  // 挂靠目录反查表（目录名 -> 规范 slug）：无独立目录的组件（如 layout 文档挂靠在 col 目录）\n  const hostToSlug = new Map(Object.entries(docHostMap ?? {}).map(([slug, host]) => [host, slug]));\n  const mapKeys = [...new Set([...Object.keys(componentMap), ...Object.keys(docHostMap ?? {})])];\n  // 挂靠目录不作为独立组件解析，避免同一文档按目录名重复生成一份\n  const componentDirs = [\n    ...mapKeys,\n    ...allEntries\n      .filter((entry) => entry.isDirectory())\n      .map((entry) => entry.name)\n      .filter((dir) => !mapKeys.includes(dir) && !hostToSlug.has(dir)),\n  ];\n  const docs: ComponentDoc[] = [];\n\n  const parsedDocs = await Promise.all(\n    componentDirs.map(async (slug) => {\n      // 挂靠组件（如 layout 文档实际位于 col 目录）：从挂靠目录解析文档与 demo\n      const componentDir = path.join(componentsRoot, docHostMap?.[slug] ?? slug);\n      try {\n        return await parseComponentDoc(componentDir, slug);\n      } catch (err) {\n        // 单个组件解析失败仅告警，不中断整体生成\n        console.warn(`[generate-llms] 解析组件 ${slug} 失败，已跳过：`, err);\n        return null;\n      }\n    })\n  );\n  parsedDocs.forEach((doc) => {\n    if (doc) docs.push(doc);\n  });\n\n  docs.sort((a, b) => a.slug.localeCompare(b.slug));\n\n  await promises.mkdir(componentsDocDir, { recursive: true });\n\n  const docEntries = docs.map((doc) => ({\n    relPath: `components/${doc.slug}.md`,\n    absPath: path.join(componentsDocDir, `${doc.slug}.md`),\n    content: renderComponentMarkdown(doc),\n  }));\n  const indexEntry = {\n    relPath: 'llms.txt',\n    absPath: path.join(outputDir, 'llms.txt'),\n    content: renderLlmsTxt(docs, siteTitle, siteDescription, splineLabels, SPLINE_ORDER, siteBaseUrl),\n  };\n  const fullIndexEntry = {\n    relPath: 'llms-full.txt',\n    absPath: path.join(outputDir, 'llms-full.txt'),\n    content: renderLlmsFullTxt(docs, siteTitle, siteDescription, splineLabels),\n  };\n\n  const outputEntries = [...docEntries, indexEntry, fullIndexEntry];\n  await Promise.all(outputEntries.map((entry) => promises.writeFile(entry.absPath, entry.content)));\n\n  logGeneratedFiles(outputEntries);\n  console.log(\n    '\\x1b[32m%s\\x1b[0m',\n    `✓ [generate-llms] 共生成 ${docEntries.length} 个组件文档 + llms.txt + llms-full.txt`\n  );\n\n  return docs;\n}\n"],"names":["isDirectorySync","p","statSync","isDirectory","_unused","defaultIsDemoSlot","componentDir","demoName","path","join","DEMO_PLACEHOLDER_RE","replaceDemoSlots","content","readDemoCode","isDemoSlot","replace","match","createComponentDocParser","options","readComponentDoc","_options$isDemoSlot","transformers","_options$titleKey","titleKey","_options$descriptionK","descriptionKey","_options$splineKey","splineKey","componentMap","_options$parseTitle","parseTitle","splitTitle","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","slug","_componentMap$slug","raw","_parseFrontmatter","data","rawTitle","_parseTitle","enTitle","subtitle","component","demoResolved","body","wrap","_context","prev","next","sent","abrupt","parseFrontmatter","title","cleanSiteHtml","reduce","block","transform","description","spline","stop","_x","_x2","apply","arguments","yamlScalar","value","v","test","concat","renderComponentMarkdown","doc","fm","trim","renderComponentSection","heading","lines","push","demoteHeadings","resolveDocUrl","siteBaseUrl","rel","base","renderIndexLine","titleText","renderLlmsTxt","docs","siteTitle","siteDescription","splineLabels","splineOrder","length","undefined","SPLINE_ORDER","groups","Map","forEach","list","get","set","knownSplines","filter","has","extraSplines","_toConsumableArray","keys","includes","sort","a","b","localeCompare","labelOf","SPLINE_LABELS","_groups$get","ungrouped","trimEnd","renderLlmsFullTxt","sections","orderedSplines","_groups$get2","logGeneratedFiles","entries","width","Math","max","map","entry","relPath","size","Buffer","byteLength","toFixed","console","log","padEnd","padStart","generateLlmsDocs","_generateLlmsDocs","_callee3","componentsRoot","outputDir","_options$platform","platform","_options$componentMap","_options$splineLabels","_options$siteTitle","_options$siteDescript","parseComponentDoc","docHostMap","componentsDocDir","allEntries","hostToSlug","mapKeys","componentDirs","parsedDocs","docEntries","indexEntry","fullIndexEntry","outputEntries","_context3","getComponentMap","promises","readdir","withFileTypes","Object","_ref2","_ref3","_slicedToArray","host","Set","name","dir","Promise","all","_ref4","_callee2","_docHostMap$slug","_t","_context2","warn","_x4","mkdir","recursive","absPath","writeFile"],"mappings":"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"}