Markdown + 高亮内核。先整体 esc 再标记替换;链接 scheme 白名单 (https?:|mailto:|/|#);不用 marked / DOMPurify。.tok-* 类名不变。
| 文件 | 职责 |
|---|---|
index.ts |
汇总导出,并把契约名 renderMd 挂到 window。 |
esc.ts |
esc(&<>")和 escQuote(属性纪律)。 |
esc.test.ts |
引号转义顺序;旧的 &<> 断言不破。 |
highlight.ts |
mdHighlight 扫描器;_OC_KW ∪ MD_KEYWORDS;EDKW 从同表派生。 |
highlight.test.ts |
.tok-* 类名、关键词并集、EDKW 派生。 |
render.ts |
renderMd / mdInline / mdCodeBlock。F-21 把表格包进 .md-table-wrap。0.2.0 存下的单段 /api/artifacts/<id> 链接(契约 v1 网关一律 404)改写到 /api/v1/artifacts/<id>,其它 href 原样保留。 |
render.test.ts |
tests/browser_smoke.mjs 的 5 个 XSS 样本;scheme 白名单;旧产物链接改写;表格容器。 |